首页 文章

Apache Spark 处理偏斜数据

提问于
浏览
9

我有两个表要合并在一起。其中之一的数据偏斜非常严重。这导致我的 spark 作业无法并行运行,因为大部分工作是在一个分区上完成的。

我听说过并且阅读过,并尝试对密钥加盐以增加分布。我想在 12:45 秒时https://www.youtube.com/watch?v=WyfHUNnMutg正是我要做的。

任何帮助或提示,将不胜感激。谢谢!

1 回答

  • 4

    是的,您应该在较大的表上使用加盐键(通过随机化),然后将较小的键/笛卡尔复制到新的加盐键:

    这里有一些建议:

    Tresata 倾斜加入 RDD https://github.com/tresata/spark-skewjoin

    python 倾斜加入:https://datarus.wordpress.com/2015/05/04/fighting-the-skew-in-spark/

    tresata库如下所示:

    import com.tresata.spark.skewjoin.Dsl._  // for the implicits   
    
    // skewjoin() method pulled in by the implicits
    rdd1.skewJoin(rdd2, defaultPartitioner(rdd1, rdd2),   
    DefaultSkewReplication(1)).sortByKey(true).collect.toLis
    

相关问题