在星火数据帧(4x)上执行几个联接时,我得到以下错误:
org.apache.spark.shuffle.FetchFailedException: failed to allocate 16777216 byte(s) of direct memory (used: 4294967296, max: 4294967296)即使在设置:
--conf "spark.executor.extraJavaOptions-XX:MaxDirectMemorySize=4G" \这个问题还没有解决。
发布于 2020-03-23 23:18:06
好像有太多的飞行障碍了。尝试使用较小的spark.reducer.maxBlocksInFlightPerAddress值。为了便于参考,请看一下这个JIRA
引用案文:
对于具有外部洗牌功能的配置,我们已经观察到,如果一个非常大的no。从远程主机获取的块中,它会使NM承受额外的压力,并可能使其崩溃。此更改引入配置spark.reducer.maxBlocksInFlightPerAddress,以限制no。从给定的远程地址获取的映射输出。这里应用的更改适用于两种场景--当外部洗牌被启用和禁用时。
https://stackoverflow.com/questions/60808693
复制相似问题