AWS胶水将动态框架写出内存不足OOM

问题描述

我正在使用AWS胶水运行pyspark来从目录中读取动态框架(redshift中的数据),然后将其以csv格式写入s3。我收到此错误消息,说执行程序内存不足:

An error occurred while calling o883.pyWriteDynamicFrame. Job aborted due to stage failure: Task 388 in stage 21.0 failed 4 times,most recent failure: Lost task 388.3 in stage 21.0 (TID 10713,ip-10-242-88-215.us-west-2.compute.internal,executor 86): ExecutorLostFailure (executor 86 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 16.1 GB of 16 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead or disabling yarn.nodemanager.vmem-check-enabled because of YARN-4714.

我的猜测是,数据帧在写入之前没有很好地分区,因此一个执行程序用尽了内存。但是,当我按照该文档https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html将分区键添加到动态框架时,该作业仅在4小时后超时。 (我选择的分区键将数据集分为大约10个分区)

我尝试过的其他方法:

  1. 尝试配置fetchsize,但aws doc显示胶水默认情况下已将fetchsize配置为1000。 https://aws.amazon.com/blogs/big-data/optimize-memory-management-in-aws-glue/#:~:text=With%20AWS%20Glue%2C%20Dynamic%20Frames,Spark%20executor%20and%20database%20instance
  2. 尝试设置下推谓词,但是每天创建输入数据集,并且不进行分区。我还需要所有行来在ETL中执行联接/过滤器,因此这对我而言可能不是一个好的解决方案。

有人知道有什么好的替代方法可以尝试吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...