开发者社区> 问答> 正文

Spark如何自定义partitioner分区器?

Spark如何自定义partitioner分区器?

展开
收起
茶什i 2019-10-29 11:39:07 2390 0
2 条回答
写回答
取消 提交回答
  • 在hadoop的mapreduce中默认patitioner是HashPartitioner,我们可以自定义Partitioner可以有效防止数据倾斜, 在Spark里面也是一样,在Spark里也是默认的HashPartitioner, 如果自己想自己定义Partitioner继承org.apache.spark里面的Partitioner并且重写它里面的两个方法就行了

    2020-03-19 19:52:38
    赞同 展开评论 打赏
  • 1)spark默认实现了HashPartitioner和RangePartitioner两种分区策略,我们也可以自己扩展分区策略,自定义分区器的时候继承org.apache.spark.Partitioner类,实现类中的三个方法
    def numPartitions: Int:这个方法需要返回你想要创建分区的个数;
    def getPartition(key: Any): Int:这个函数需要对输入的key做计算,然后返回该key的分区ID,范围一定是0到numPartitions-1;
    equals():这个是Java标准的判断相等的函数,之所以要求用户实现这个函数是因为Spark内部会比较两个RDD的分区是否一样。
    2)使用,调用parttionBy方法中传入自定义分区对象
    参考:http://blog.csdn.net/high2011/article/details/68491115

    2019-10-30 14:51:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载