Spark进行wordcount防止数据倾斜

重组元组中的key,变为key_Random,再进行聚合。然后进行map以_切割,再重新聚合。

 sc.textFile("hdfs://s201/user/word.txt").flatMap(_.split(" ")).map((_,1)).map(t=>{import scala.util.Random;val par = Random.nextInt(10);(t._1+"_"+par,1)}).reduceByKey(_+_).map(t=>{val arr = t._1.split("_");(arr(0),t._2)}).reduceByKey(_+_).collect

WEBUI界面:以聚合之前的shuffle分为3个阶段。

Spark进行wordcount防止数据倾斜_第1张图片

你可能感兴趣的:(Spark)