【发布时间】:2020-02-12 06:01:02
【问题描述】:
我清楚地了解 Spark 如何将数据拆分到执行程序中的分区,然后处理每个分区,然后聚合直到最终的“逻辑”数据帧。
但是使用windows,我觉得每个window数据应该在一个分区中,这样每个executor的数据都在本地?还是数据仍然被拆分,然后用某种魔法聚合?
这种窗口的一个例子是:
val window = Window
.partitionBy("partition-col")
.orderBy("order-col")
.rowsBetween(Window.unboundedPreceding, Window.unboundedFollowing)
myDF.withColumn("sum", sum("aCol").over(window))
Spark 如何处理这个问题?使用 windows 性能如何?
如果我处理一个窗口中的 50 列,该怎么办?会不会产生大量的网络交换,还是每个窗口都会在本地处理?
【问题讨论】:
标签: apache-spark apache-spark-sql bigdata