Apache Spark SQL - RDD 内存数据倾斜

4
我正在尝试使用CACHE TABLE tablename;将Hive表缓存到内存中。
执行此命令后,表被成功地缓存,但我注意到RDD在分区内存中的分布不均匀。
以下是我在应用程序主节点的“存储”选项卡中看到的情况。
rdd_71_1    Memory Deserialized 1x Replicated   1264.7 MB   0.0 B   node4:38759
rdd_71_10   Memory Deserialized 1x Replicated   11.6 MB     0.0 B   node1:58115
rdd_71_11   Memory Deserialized 1x Replicated   25.7 MB     0.0 B   node1:53968
rdd_71_2    Memory Deserialized 1x Replicated   72.6 MB     0.0 B   node4:54133
rdd_71_4    Memory Deserialized 1x Replicated   1260.9 MB   0.0 B   node2:33179
rdd_71_5    Memory Deserialized 1x Replicated   56.8 MB     0.0 B   node2:54222
rdd_71_7    Memory Deserialized 1x Replicated   54.5 MB     0.0 B   node4:34149
rdd_71_8    Memory Deserialized 1x Replicated   1277.8 MB   0.0 B   node1:43572
rdd_71_9    Memory Deserialized 1x Replicated   1255.8 MB   0.0 B   node1:58518

注意,某些分区的范围为11MB到72MB,而其他分区的范围为~1200MB。

即使我不缓存表格,只是从磁盘简单处理,我也看到一些任务比其他任务完成得快得多,这进一步证实了我对数据倾斜的猜测。

这里发生了什么?我如何避免数据倾斜?

附注:该表格以ORC格式存储。


我猜缓存表正在执行临时缓存以提高计算性能。 - eliasah
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接