【发布时间】:2018-05-29 02:22:59
【问题描述】:
我希望在 Spark 2.2 中生成解释/执行计划,并对数据帧执行一些操作。这里的目标是在我开始工作并消耗集群资源之前确保分区修剪按预期进行。我在这里尝试了 Spark 文档搜索和 SO 搜索,但找不到适合我情况的语法。
这是一个简单的例子,工作如预期:
scala> List(1, 2, 3, 4).toDF.explain
== Physical Plan ==
LocalTableScan [value#42]
这是一个没有按预期工作但希望开始工作的示例:
scala> List(1, 2, 3, 4).toDF.count.explain
<console>:24: error: value explain is not a member of Long
List(1, 2, 3, 4).toDF.count.explain
^
这里有一个更详细的例子来进一步展示我希望通过解释计划来确认的分区修剪的最终目标。
val newDf = spark.read.parquet(df).filter(s"start >= ${startDt}").filter(s"start <= ${endDt}")
提前感谢您的任何想法/反馈。
【问题讨论】:
-
explain是作为 Dataset/DataFrame API 的一部分提供的 Spark SQL 函数。当您执行count或collect之类的操作时,它会分别返回Long和Array类型,它们没有explain作为其成员。
标签: apache-spark scala-2.11 apache-spark-2.2