EMR spark 步骤并将输出合并到一个文件中
EMR spark step and merge output into one file
我正在尝试 emr spark 步骤。我有一个输入 s3 目录。其中有多个文件:f1、f2、f3
我正在像这样添加火花步骤:
aws emr --region us-west-2 add-steps --cluster-id foo --steps '[{"Args":["spark-submit","--deploy-mode","cluster","--class","JsonToDataToParquetJob","s3://foo/My.assembly.jar","s3://inputDir/","output/"],"Type":"CUSTOM_JAR","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Name":"Spark application"}]'
其中有以下代码:
delimitedData.write.mode(SaveMode.Append).parquet(output)
我面临的问题是:
我有多个输出文件。但我正在寻找的是目录中的单个输出文件。我怎样才能做到这一点?
默认情况下,每个分区都会生成一个输出文件。
你应该能够通过 repartition(1)
.
实现你想要的
像这样:
repartition(1).write().mode(SaveMode.Append).parquet(output);
我正在尝试 emr spark 步骤。我有一个输入 s3 目录。其中有多个文件:f1、f2、f3
我正在像这样添加火花步骤:
aws emr --region us-west-2 add-steps --cluster-id foo --steps '[{"Args":["spark-submit","--deploy-mode","cluster","--class","JsonToDataToParquetJob","s3://foo/My.assembly.jar","s3://inputDir/","output/"],"Type":"CUSTOM_JAR","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Name":"Spark application"}]'
其中有以下代码:
delimitedData.write.mode(SaveMode.Append).parquet(output)
我面临的问题是: 我有多个输出文件。但我正在寻找的是目录中的单个输出文件。我怎样才能做到这一点?
默认情况下,每个分区都会生成一个输出文件。
你应该能够通过 repartition(1)
.
像这样:
repartition(1).write().mode(SaveMode.Append).parquet(output);