我有两张桌子想连接在一起。其中之一的数据偏差非常严重。这导致我的 Spark 作业无法并行运行,因为大部分工作都是在一个分区上完成的。
我听过、读过并尝试对我的密钥进行加盐以增加分发。https://www.youtube.com/watch?v=WyfHUNnMutg12:45 秒正是我想做的。
任何帮助或提示将不胜感激。谢谢!
是的,您应该在较大的表上使用加盐键(通过随机化),然后复制较小的表/笛卡尔将其连接到新的加盐表:
这里有一些建议:
Tresata 倾斜加入 RDDhttps://github.com/tresata/spark-skewjoin
python 倾斜连接:https://datarus.wordpress.com/2015/05/04/fighting-the-skew-in-spark/
The 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)