因此,我在AWS EMR集群上运行了一个pyspark作业,其中包含EMR 5.11.0,Spark 2.2.1。 spark工作需要向S3写一个相当大的数据帧(~100GB)。 起初我尝试直接写入S3,如下所示:
df = .... # calculate the data frame
df.write.mode("append").parquet("s3://...")
然后写入失败并出现以下错误:
Caused by: java.io.IOException: Error closing multipart upload
at com.amazon.ws.emr.hadoop.fs.s3n.MultipartUploadOutputStream.uploadMultiParts(MultipartUploadOutputStream.java:378)
at com.amazon.ws.emr.hadoop.fs.s3n.MultipartUploadOutputStream.close(MultipartUploadOutputStream.java:395)
at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:74)
at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:108)
at org.apache.parquet.hadoop.ParquetFileWriter.end(ParquetFileWriter.java:639)
at org.apache.parquet.hadoop.InternalParquetRecordWriter.close(InternalParquetRecordWriter.java:117)
at org.apache.parquet.hadoop.ParquetRecordWriter.close(ParquetRecordWriter.java:163)
或者,我可以先写入HDFS,然后使用s3distcp复制到S3,那就说,我想知道如何直接写入S3工作?
由于