object Sample找数据倾斜的key {
def main(args: Array[String]): Unit = {
val wordCount = new SparkConf().setMaster("local[*]").setAppName("wordCount")
val sc = new SparkContext(wordCount)
val list: List[String] = List("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",
"a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "b", "b", "b", "c", "c", "d", "r")
val data = sc.makeRDD(list)
val unit: RDD[String] = data.sample(true, 0.5, 3)
val tuples: Array[(String, Int)] = unit.map((_, 1))
.reduceByKey((x, y) => x + y)
.sortBy(_._2, false)
.collect()
tuples.foreach(print(_))
}
}
输出结果:
(a,13)(b,1)(c,1)