Apache Spark处理倾斜数据



我有两个表,我想连接在一起。其中一个有非常糟糕的数据偏差。这导致我的spark作业不能并行运行,因为大部分工作都在一个分区上完成。

我听说过,读过,并试图实现盐我的键来增加分布。https://www.youtube.com/watch?v=WyfHUNnMutg在12:45秒正是我想做的。

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

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

这里有几个建议:

Tresata斜连接RDD https://github.com/tresata/spark-skewjoin

python skew join: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

相关内容

  • 没有找到相关文章

最新更新