首页 > 解决方案 > AWS Glue:数据是否偏斜?

问题描述

我在 AWS Glue 中有一份工作失败了:

调用 o567.pyWriteDynamicFrame 时出错。由于阶段故障而中止作业:阶段 31.0 中的任务 168 失败 4 次,最近一次失败:阶段 31.0 中丢失任务 168.3(TID 39474,ip-10-0-32-245.ec2.internal,执行程序 102):ExecutorLostFailure(执行程序 102 因其中一项正在运行的任务而退出)原因:容器因超出内存限制而被 YARN 杀死。使用了 22.2 GB 的 22 GB 物理内存。由于 YARN-4714,请考虑提高 spark.yarn.executor.memoryOverhead 或禁用 yarn.nodemanager.vmem-check-enabled。

主要信息是Container killed by YARN for exceeding memory limits. 22.2 GB of 22 GB physical memory used.

我已经将广播用于小型 dfs 和盐技术用于更大的表。

输入包含要处理的 75GB JSON 文件。

我对输入文件使用了 32MB 的分组:

additional_options={
    'groupFiles': 'inPartition',
    'groupSize': 1024*1024*32,
},

输出文件写入 256 个分区:

output_df = output_df.coalesce(256)

在 AWS Glue 中,我使用 60 个 G.2X 执行器 = 60 x(8 个 vCPU、32 GB 内存、128 GB 磁盘)启动了该作业。

下面是表示此作业指标的图表。由此看来,数据看起来并没有歪斜……我错了吗?

欢迎任何关于成功运行的建议!

在此处输入图像描述

标签: apache-sparkpysparkapache-spark-sqlaws-glueaws-glue-spark

解决方案


尝试使用repartition而不是coalesce. 后者将根据您提供的分区数执行完整的执行。在您的情况下,它尝试使用 处理所有输入数据256 partitions,当它无法处理输入数据量时,您将收到错误消息。


推荐阅读