我需要读取S3中的JSON文件并处理它们。S3的一个目录中大约有120,000个JSONL文件。每个文件的大小大约为1.6MB。
我的Spark代码很简单:
spark.read().json(s3DirectoryPath)
字符串
这将触发两个作业:
1.列出作业
1.读取作业
的数据
我的问题是列表工作需要很多时间(大约2小时)。如何优化这一点?
另外,我看到spark决定形成10,000个任务来列出文件。Spark是如何决定任务数量的?这是否可以调整以给予更好的性能?
注意:将多个文件合并为大文件对我来说不是一个选择。
环境详情:
AWS EMR
2个m5.xlarge机器中的2个执行器
1条答案
按热度按时间7gcisfzg1#
我以前遇到过同样的问题。最后,我通过
boto3
手动列出了所有文件,并将字符串列表放入spark.read.parquet
。这为我节省了大量的时间。