美文网首页
Spark partitioner

Spark partitioner

作者: clive0x | 来源:发表于2019-07-16 00:18 被阅读0次

    Partitioner.scala,

    Spark提供HashPartitioner和RangePartitioner

    前者通过key.hashcode%partitions决定分区,弊端就是hashcode不确定可能导致分配不均匀。

    RangePartitioner使一定范围的key进入一个分区,i分区比i+1分区key要小,分区内部没有按key排序。

    一定范围根据水桶抽样决定weight。

    两个分区操作默认partitioner确定方法:

    如果父分区存在的有效的(存在partitioner的RDD分区数与父RDD最大的分区数相差在一个数据级内)partitioner或者partitioner大于默认分区数(配置了spark.default.parallelism或者父RDD最多的分区数),则使用父RDD 具有partitioner并且partitions最多的partitioner,否则使用HashPartitioner

    // If the existing max partitioner is an eligible one, or its partitions number is larger

        // than the default number of partitions, use the existing partitioner.

        if (hasMaxPartitioner.nonEmpty && (isEligiblePartitioner(hasMaxPartitioner.get, rdds) ||

            defaultNumPartitions < hasMaxPartitioner.get.getNumPartitions)) {

          hasMaxPartitioner.get.partitioner.get

        } else {

          new HashPartitioner(defaultNumPartitions)

        }

    相关文章

      网友评论

          本文标题:Spark partitioner

          本文链接:https://www.haomeiwen.com/subject/wneakctx.html