我在spark中加入了两个Dataframe, A
以及 B
.
A -> Huge dataframe approx size: 100 TB
B -> Smaller dataframe approx size: 100 MB
两个问题:
如何减少网络洗牌,因为spark用户界面显示洗牌读取约30gb。
任务的数量也是巨大的,大约有1000000个。有什么建议可以减少吗?
我试过缓存Dataframe A
但令人惊讶的是,这只会让工作变慢。任何帮助都将不胜感激。
我在spark中加入了两个Dataframe, A
以及 B
.
A -> Huge dataframe approx size: 100 TB
B -> Smaller dataframe approx size: 100 MB
两个问题:
如何减少网络洗牌,因为spark用户界面显示洗牌读取约30gb。
任务的数量也是巨大的,大约有1000000个。有什么建议可以减少吗?
我试过缓存Dataframe A
但令人惊讶的是,这只会让工作变慢。任何帮助都将不胜感激。
1条答案
按热度按时间3phpmpom1#
你可以试着增加
autoBroadcastJoinThreshold
以触发一个Map端连接,或者如果这没有帮助,显式地广播您的B
(较小)Dataframe:这应该完全消除连接相关的洗牌。