当前尝试使用EMR将s3中的大量json文件(750万个)写入几个镶木文件(128MB)或每个文件3600条记录中。但是,该过程要么花费太长时间,要么输出的文件数量不正确。
以下内容在EMR 12x c4.8xlarge核心节点,r3.2xlarge主节点上运行
df = spark.read.json("s3://BUCKET)
将文件读入数据框后。尝试直接写入s3
df.write.parquet("s3://BUCKET")
然而,这在3个小时内创建了200,000个文件,每个文件仅包含约36条记录
我试图重新分区并合并
df.coalesce(2000).write.parquet("s3://BUCKET")
df.repartition(2000).write.parquet("s3://BUCKET")
但这花了大约10个小时
预期输出
请建议我应该使用的任何EMR配置或Spark(欢迎使用python或Scala解决方案)代码
如果有人对EMR为什么要创建如此多的任务一开始也有帮助,