Amazon s3 AWS胶写动态帧内存不足(OOM)

Amazon s3 AWS胶写动态帧内存不足(OOM),amazon-s3,memory-management,pyspark,out-of-memory,aws-glue,Amazon S3,Memory Management,Pyspark,Out Of Memory,Aws Glue,我使用AWS glue运行pyspark从目录中读取动态帧(数据为红移),然后以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.

我使用AWS glue运行pyspark从目录中读取动态帧(数据为红移),然后以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.
我的猜测是,数据帧在写入之前没有很好地分区,因此一个执行器的内存不足。但是,当我按照这个文档向dynamicframe添加分区键时,作业在4小时后就会超时。(我选择的分区键将数据集拆分为大约10个分区)

我尝试了其他一些方法:

  • 正在尝试配置fetchsize,但aws文档显示glue已将fetchsize默认配置为1000
  • 试图设置下推谓词,但输入数据集是每天创建的,没有分区。我还需要所有行在ETL中执行连接/过滤器,所以这对我来说可能不是一个好的解决方案

  • 有人知道有哪些好的替代方案可以尝试吗?

    尝试了不同的节点类型?@Prabhakarredy是的,我尝试了不同的工作类型并缩放了具有最大内存限制的节点类型?@Prabhakarredy是的,我尝试了不同的工作类型并缩放了具有最大内存限制的节点类型