我想了解一下火花派对是如何运作的。
为了理解这一点,我在spark 1.6上有以下代码
def countByPartition1(rdd: RDD[(String, Int)]) = {
rdd.mapPartitions(iter => Iterator(iter.length))
}
def countByPartition2(rdd: RDD[String]) = {
rdd.mapPartitions(iter => Iterator(iter.length))
}
// RDDs创建
val rdd1 = sc.parallelize(Array(("aa", 1), ("aa", 1), ("aa", 1), ("aa", 1)), 8)
countByPartition(rdd1).collect()
Array [Int] = Array(0,1,0,1,0,1,0,1)
val rdd2 = sc.parallelize(Array("aa", "aa", "aa", "aa"), 8)
countByPartition(rdd2).collect()
Array [Int] = Array(0,1,0,1,0,1,0,1)
在这两种情况下,数据均匀分布。 在上述观察的基础上,我确实有以下问题:
我已经关注了@ zero323,但没有得到答案。 How does HashPartitioner work?