我在aws glue的工作失败了:
调用o567.pywritedynamicframe时出错。作业因阶段失败而中止:阶段31.0中的任务168失败4次,最近的失败:阶段31.0中的任务168.3丢失(tid 39474,ip-10-0-32-245.ec2.internal,executor 102):executlostfailure(executor 102因某个正在运行的任务而退出)原因:容器因超出内存限制而被yarn杀死。使用22.2 gb的22 gb物理内存。考虑提升spark.yarn.executor.memoryoverhead或禁用yarn.nodemanager.vmem-check-enabled,因为yarn-4714。
主要信息是 Container killed by YARN for exceeding memory limits. 22.2 GB of 22 GB physical memory used.
我对小dfs使用广播,对大表使用salt技术。
输入由75gb的json文件组成。
我对输入文件使用了32mb的分组:
additional_options={
'groupFiles': 'inPartition',
'groupSize': 1024*1024*32,
},
输出文件用256个分区写入:
output_df = output_df.coalesce(256)
在aws glue中,我使用60g.2xexecutors=60x(8vcpu,32gb内存,128gb磁盘)启动作业。
下面是表示此作业的度量的图。从这一点来看,数据看起来并不偏斜。。。我错了吗?
欢迎任何建议,成功运行这个!
1条答案
按热度按时间shyt4zoc1#
尝试使用
repartition
而不是coalesce
. 后者将根据您提供的分区数执行完整的执行。在您的例子中,它尝试使用256 partitions
,当它不能处理输入数据量时,您将得到错误。