• Spark RDD概念学习系列之Pair RDD的分区控制


      不多说,直接上干货!

    Pair RDD的分区控制

      Pair RDD的分区控制

      (1) Spark 中所有的键值对RDD 都可以进行分区控制---自定义分区

      (2)自定义分区的好处:

         1) 避免数据倾斜

         2) 控制task并行度

      自定义分区方式

    class DomainNamePartitioner(numParts: Int) extends Partitioner {
        override def numPartitions: Int = numParts
        override def getPartition(key: Any): Int = {
            val domain = new Java.net.URL(key.toString).getHost()
            val code = (domain.hashCode % numPartitions)
            if(code < 0) {
                code + numPartitions // 使其非负
            }else{
                code
            }
        }
        // 用来让Spark区分分区函数对象的Java equals方法
        override def equals(other: Any): Boolean = other match {
            case dnp: DomainNamePartitioner =>
                dnp.numPartitions == numPartitions
            case _ =>
                false
        }
  • 相关阅读:
    Photoshop 基础七 位图 矢量图 栅格化
    Photoshop 基础六 图层
    Warfare And Logistics UVALive
    Walk Through the Forest UVA
    Airport Express UVA
    Guess UVALive
    Play on Words UVA
    The Necklace UVA
    Food Delivery ZOJ
    Brackets Sequence POJ
  • 原文地址:https://www.cnblogs.com/zlslch/p/6941348.html
Copyright © 2020-2023  润新知