我使用aws lambda和aws glue来解压存储在s3中的大文件(高达150gb)。该作业在小文件(1-2gb)上运行良好,但是较大的文件因“内存错误”而失败。我在相关的cloudwatch日志中找不到任何关于内存错误的信息,而且glue中内置的metrics部分也没有显示任何信息。我如何才能确定我的问题来自何处,我能做些什么来解决它?谢谢您
另外,我的胶水工作是在python3上运行spark
我使用aws lambda和aws glue来解压存储在s3中的大文件(高达150gb)。该作业在小文件(1-2gb)上运行良好,但是较大的文件因“内存错误”而失败。我在相关的cloudwatch日志中找不到任何关于内存错误的信息,而且glue中内置的metrics部分也没有显示任何信息。我如何才能确定我的问题来自何处,我能做些什么来解决它?谢谢您
另外,我的胶水工作是在python3上运行spark
1条答案
按热度按时间anauzrmj1#
你需要看看spark到底在做什么,以及工作在什么阶段失败。在spark中有两种不同类型的操作符。其中需要将所有记录放入内存,也需要可以流式处理的记录,以便只有一个记录在内存中(稍微简化)。很可能不是读取csv导致了失败,而是下一步的失败。spark history server将为您提供有关sql选项卡中发生了什么的更多信息,以便使用dataframe.explain()手动打印查询计划。
我怀疑您可以通过添加一个手动dataframe.repartition(400)来绕过这一步。
此外,它的坏做法,以创造CSV那么大。要么使用大小合理的csv集,要么使用允许多个并行读卡器(如parquet)的格式。