Spark 2.x - Как создать простой план объяснения / выполнения - PullRequest
0 голосов
/ 29 мая 2018

Я надеюсь сгенерировать план объяснения / выполнения в 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}")

Заранее благодарим за любые мысли / отзывы.

1 Ответ

0 голосов
/ 29 мая 2018

count метод оценивается с нетерпением и, как вы видите, возвращает Long, поэтому план выполнения недоступен.

Вы должны использовать ленивое преобразование:

import org.apache.spark.sql.functions.count

df.select(count($"*"))

или

df.groupBy().agg(count($"*"))
...