我正在开发AWS Glue ETL部分,用于读取巨大的json文件(仅测试1个文件,大约9 GB(以在ETL过程中工作,但在运行和处理了一段时间后,我从java.lang.OutOfMemoryError: Java heap space
的AWS Glue中得到了一个错误
我的代码和流程就像一样简单
df = spark.read.option("multiline", "true").json(f"s3/raw_path")
// ...
// and write to be as source_df to other object in s3
df.write.json(f"s3/source_path", lineSep=",n")
在error/log中,自从读取这个巨大的文件后,它似乎失败并终止了容器。我已经尝试过用工作节点的样本数量将工作节点类型升级为G1.X
,然而,我只想询问并找到另一种解决方案,它看起来不像是随着资源的增加而垂直扩展
我对这一领域和服务很陌生,所以我想尽可能低地优化成本和时间:-(
提前感谢大家
在研究了Glue和Spark之后,我发现为了在多个执行器之间获得并行处理的好处,就我的情况而言,我将(大(文件拆分为多个较小的文件,这很有效!这些文件被分发给多个执行者。