当前位置:   article > 正文

Spark Partition方式_spark repartition 能保证同一个key的数据分配到一起

spark repartition 能保证同一个key的数据分配到一起

HashPartition

df.repartition(10, Seq("col_name1", "col_name2"))
  • 1

指定字段进行Hash & 取模,将数据分发到不同分区。

轮询分发

df.repartition(10)
  • 1

遍历数据,依次分发到不同分区。

PartitionRange

Spark引入RangePartitioner的目的是为了解决HashPartitioner所带来的分区倾斜问题,也即分区中包含的数据量不均衡问题。HashPartitioner采用哈希的方式将同一类型的Key分配到同一个Partition中,因此当某一或某几种类型数据量较多时,就会造成若干Partition中包含的数据过大问题,而在Job执行过程中,一个Partition对应一个Task,此时就会使得某几个Task运行过慢。RangePartitioner基于抽样的思想来对数据进行分区。图4简单描述了RangePartitioner的数据分区过程。

df.repartitionByRange(10)
  • 1

通过水塘抽样算法进行数据采样,对采样数据尽量等分进行分区。

参考文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/727522
推荐阅读
相关标签
  

闽ICP备14008679号