gpt4 book ai didi

apache-spark - Apache Spark SQL - RDD 内存数据倾斜

转载 作者:行者123 更新时间:2023-12-04 05:15:25 25 4
gpt4 key购买 nike

我正在尝试使用以下方法在内存中缓存 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

即使我没有缓存表,而只是从磁盘进行处理,我也看到某些任务比其他任务完成得更早,这进一步证实了我对偏度的猜测。

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

PS:表以ORC格式存储

最佳答案

我不完全知道为什么直接从磁盘读取数据时会出现偏差。但是,我发现 repartition 经常有用。您的数据以平衡分区的大小并避免被单个持久任务所阻碍。我建议阅读 https://www.safaribooksonline.com/library/view/learning-spark/9781449359034/ch04.html 的最后一部分(“数据分区(高级)”部分)提供了一些不错的提示:)

关于apache-spark - Apache Spark SQL - RDD 内存数据倾斜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29941276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com