Apache Spark处理偏差数据

Joh*_*art 9 hadoop scala apache-spark spark-dataframe

我有两张桌子想加入.其中一个数据偏差非常糟糕.这导致我的spark作业不能并行运行,因为大部分工作都是在一个分区上完成的.

我已经听过并阅读并试图实施盐键以增加分配. 在12:45秒https://www.youtube.com/watch?v=WyfHUNnMutg正是我想要做的.

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

jav*_*dba 5

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

这里有一些建议:

Tresata skew join 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
Run Code Online (Sandbox Code Playgroud)