小编Ano*_*non的帖子

在什么情况下,散列分区比Spark中的范围分区更受欢迎?

我已经阅读了有关散列分区的各种文章.但我仍然不知道在什么情况下它比范围分区更有利.使用sortByKey后跟范围分区允许数据在集群中均匀分布.但在散列分区中可能不是这种情况.请考虑以下示例:

考虑一对带有键[8,96,240,400,401,800]的RDD,所需的分区数为4.

在这种情况下,散列分区在分区之间按如下方式分配密钥:

partition 0: [8, 96, 240, 400, 800]
partition 1: [ 401 ]
partition 2: []
partition 3: [] 
Run Code Online (Sandbox Code Playgroud)

(计算分区:p = key.hashCode()%numPartitions)

由于密钥不是均匀分布在所有节点上,因此上述分区会导致性能下降.由于范围分区可以在集群中平均分配密钥,那么在什么情况下散列分区被证明最适合范围分区?

performance partitioning apache-spark rdd

10
推荐指数
1
解决办法
1786
查看次数

标签 统计

apache-spark ×1

partitioning ×1

performance ×1

rdd ×1