使用过滤器或贴图应用哪个变换更快的Scala Spark

时间:2018-09-06 06:55:26

标签: scala apache-spark

我正在尝试使用当前使用spark sql的scala使用spark对数据集进行一些转换,但希望将代码转换为本机scala代码。我想知道是使用过滤器还是映射,进行一些操作,例如匹配列中的值,并在转换为其他数据集后获得单个列。

SELECT * FROM TABLE WHERE COLUMN = ''

过去曾在spark sql中编写过类似的代码,有人可以告诉我另一种在数据集上使用map或filter编写相同内容的方法,甚至比比较起来快得多的方法。

2 个答案:

答案 0 :(得分:0)

您可以从Apache Spark网站阅读文档。这是指向https://spark.apache.org/docs/2.3.1/api/scala/index.html#package的API文档的链接。 这是一个小例子-

response

答案 1 :(得分:0)

如果我理解您的问题正确,则需要将SQL查询重写为DataFrame API。您的查询从表TABLE中读取所有列,并过滤COLUMN为空的行。您可以通过以下方式使用DF:

spark.read.table("TABLE")
  .where($"COLUMN".eqNullSafe(""))
  .show(10)

性能将与您的SQL中的相同。使用dataFrame.explain(true)方法来了解Spark会做什么。