Apache Spark 处理倾斜数据
Apache Spark Handling Skewed Data
我有两个表想连接在一起。其中一个有非常严重的数据偏差。这导致我的 spark 作业无法 运行 并行,因为大部分工作是在一个分区上完成的。
我听过、读过并尝试对我的密钥进行加盐以增加分发。
https://www.youtube.com/watch?v=WyfHUNnMutg 在 12:45 秒正是我想要做的。
如有任何帮助或提示,我们将不胜感激。谢谢!
是的,您应该在较大的 table 上使用加盐键(通过随机化),然后复制较小的键/笛卡尔将其加入新的加盐键:
这里有一些建议:
Tresata skew join 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
我有两个表想连接在一起。其中一个有非常严重的数据偏差。这导致我的 spark 作业无法 运行 并行,因为大部分工作是在一个分区上完成的。
我听过、读过并尝试对我的密钥进行加盐以增加分发。 https://www.youtube.com/watch?v=WyfHUNnMutg 在 12:45 秒正是我想要做的。
如有任何帮助或提示,我们将不胜感激。谢谢!
是的,您应该在较大的 table 上使用加盐键(通过随机化),然后复制较小的键/笛卡尔将其加入新的加盐键:
这里有一些建议:
Tresata skew join 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