【发布时间】:2018-10-26 13:39:13
【问题描述】:
[Spark 新手] 语言 - Scala
根据文档,RangePartitioner 将元素分类并划分为块并将这些块分发到不同的机器。下面的示例将如何工作。
假设我们有一个包含 2 列的数据框,其中一列(例如“A”)具有从 1 到 1000 的连续值。还有另一个具有相同架构的数据框,但对应的列只有 4 个值 30、250、500, 900.(这些可以是任何值,从 1 到 1000 中随机选择)
如果我同时使用 RangePartitioner 进行分区,
df_a.partitionByRange($"A")
df_b.partitionByRange($"A")
两个数据帧中的数据将如何跨节点分布?
假设分区数为5。
另外,如果我知道第二个 DataFrame 的值数量较少,那么减少它的分区数量会有所不同吗?
我很难理解的是,Spark 如何将 df_a 的一个分区映射到 df_b 的一个分区,以及它如何将这两个分区发送(如果有的话)到同一台机器进行加工。
【问题讨论】:
标签: apache-spark apache-spark-sql apache-spark-dataset