Spark的HashPartitioner方式的Python实现是这样的
这篇文章给大家介绍Spark的HashPartitioner方式的Python实现是这样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
桂平网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
spark中的默认分区方式是org.apache.spark.HashPartitioner,具体代码如下所示:
class HashPartitioner(partitions: Int) extends Partitioner { require(partitions >= 0, s"Number of partitions ($partitions) cannot be negative.") def numPartitions: Int = partitions def getPartition(key: Any): Int = key match { case null => 0 case _ => Utils.nonNegativeMod(key.hashCode, numPartitions) } override def equals(other: Any): Boolean = other match { case h: HashPartitioner => h.numPartitions == numPartitions case _ => false } override def hashCode: Int = numPartitions }
如果想要在Python中获取一个key的分区,只需要实现hashCode,然后取模。
hashCode的实现方式如下:
def java_string_hashcode(s): h = 0 for c in s: h = (31 * h + ord(c)) & 0xFFFFFFFF return ((h + 0x80000000) & 0xFFFFFFFF) - 0x80000000
验证
Scala实现
Python实现
关于Spark的HashPartitioner方式的Python实现是这样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
网页名称:Spark的HashPartitioner方式的Python实现是这样的
分享URL:http://azwzsj.com/article/ihocpg.html