the*_*tom 3 apache-spark apache-spark-sql
可能是一个愚蠢的问题,但我注意到:
val aggDF = df.groupBy("id").pivot("col1")
Run Code Online (Sandbox Code Playgroud)
导致调用 Job。使用 Notebook 在 Databricks 下运行。这样就得到了:
(1) Spark Jobs
Job 4 View (Stages: 3/3)
Stage 12: 8/8
Stage 13: 200/200
Stage 14: 1/1
Run Code Online (Sandbox Code Playgroud)
我不知道pivot这是文档中的操作。
与往常一样,我无法在文档中找到合适的参考来解释这一点,但可能与被pivot视为操作或调用 Spark 的某个方面(即操作)有关。
pivot中有两个版本RelationalGroupedDataset。
如果仅传递列,Spark 必须获取所有不同的值来生成列,执行collect.
更推荐使用另一种方法,但需要您提前知道生成列的可能值。
def pivot(pivotColumn: Column): RelationalGroupedDataset
Run Code Online (Sandbox Code Playgroud)
与
def pivot(pivotColumn: Column, values: Seq[Any]): RelationalGroupedDataset
Run Code Online (Sandbox Code Playgroud)