我试图读取驻留在AWS S3上的Excel文件。由于我已经设置了pyspark pipelines,所以我尝试使用com.crealytics.spark.excel作为excel。它对文件**<10MB工作正常,但是,对于大文件(50到150 MB excel文件),我开始遇到如下的作业失败:
"java. lang. OutOfMemoryError:Java堆空间"
我参考了AWS Glue的文档,找到了以下故障排除指南:AWS Glue OOM Heap Space
然而,这只处理大量小文件问题或其他驱动密集型操作**,对于我的情况,它唯一的建议是扩展。
对于50MB文件,我扩展到20 - 30个工作人员,作业成功,但150MB文件仍然无法读取。
我用不同的工具集解决了这个问题。* * boto3 & pandas或 * awswrangler。在不到10分钟的时间里,只有4名工人就完成了这项工作。
我想知道我是否在Crealytics上做错了什么,考虑到pyspark应该更强大,计算更明智,考虑到它的分布式特性。此外,如果上述结果是决定性的,有谁能根据两者的工作原理来指导我为什么会发生这种情况?
2条答案
按热度按时间e4yzc0pl1#
excel无疑是这里最强大的一个。同样的情况发生在我身上一次,我当时所做的是通过增加堆空间为JVM分配更多内存。你可以通过在运行解决我的问题的作业时修改JVM参数来做到这一点,你可以将-Xmx替换为-Xmx 4g,这将把堆内存大小设置为4GB。你可以参考这个来了解更多细节Increase heap size in Java
zour9fqk2#
此错误与Java虚拟机(JVM)内的内存分配不足有关。当应用程序或服务需要的内存超过分配给它的内存时,就会发生这种情况。要解决此问题,建议聘请Cloudera管理团队的专业知识,他们可以纠正内存分配问题,确保系统的最佳性能和稳定性。