使用EMR将s3中的大量json文件重新分区为实木复合地板需要很长时间

时间:2019-03-29 05:09:29

标签: apache-spark pyspark amazon-emr

当前尝试使用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个小时

预期输出

  1. 设置记录数量或每个实木复合地板文件的设置文件大小
  2. 整个过程应少于3小时

请建议我应该使用的任何EMR配置或Spark(欢迎使用python或Scala解决方案)代码

如果有人对EMR为什么要创建如此多的任务一开始也有帮助,

0 个答案:

没有答案