美文网首页
spark - 数据倾斜

spark - 数据倾斜

作者: 良人与我 | 来源:发表于2019-02-08 22:51 被阅读4次

    spark 是否会产生数据倾斜?
    会的。比如单词统计,如果某个单词的量非常之巨大,聚合到同一个节点的时候它的数据就会非常大。这样就会发生数据倾斜。

    解决办法
    可以为 单词拼接 后缀 _x(x 为随机数)
    这样混洗的时候 即使是同一个单词也会因为不同后缀的缘故分配到不同节点。

    代码实现如下:

    JavaPairRDD<String,Integer> rdd1 = sc.textFile(filePaht)
                    .flatMap( s -> Arrays.asList(s.split(" ")).iterator())
                    .filter(t->StringUtils.isNoneBlank(t))
                    .mapToPair(s -> new Tuple2<>(s+"_"+RandomUtils.nextInt(0,100), 1))
                    .reduceByKey((v1,v2)-> (v1+v2))
                    .mapToPair(t-> new Tuple2<>(t._1.substring(0,t._1.indexOf('_')), t._2))
                    .reduceByKey((v1,v2)-> (v1+v2));
            rdd1.collect().forEach(t-> System.out.println(t + " " + Thread.currentThread()));
        
    

    相关文章

      网友评论

          本文标题:spark - 数据倾斜

          本文链接:https://www.haomeiwen.com/subject/mbfzhqtx.html