可能是一个愚蠢的问题,但我注意到:
val aggDF = df.groupBy("id").pivot("col1")
导致一个作业被调用。在Databricks下使用Notebook运行。这是得到的:
(1) Spark Jobs
Job 4 View (Stages: 3/3)
Stage 12: 8/8
Stage 13: 200/200
Stage 14: 1/1
我不知道pivot
是文档中的一项操作。
像往常一样,我在文档中找不到合适的参考资料来解释这一点,但可能与pivot
被视为Action或将Spark称为Action的某个方面有关。
答案 0 :(得分:1)
pivot
中有RelationalGroupedDataset
的两个版本。
如果仅传递列,Spark必须获取所有不同的值以生成列,并执行collect
。
更推荐使用另一种方法,但需要您事先知道可能的值以生成列。
def pivot(pivotColumn: Column): RelationalGroupedDataset
vs
def pivot(pivotColumn: Column, values: Seq[Any]): RelationalGroupedDataset