Spark写入S3 SaveMode.Append

时间:2016-10-27 21:02:48

标签: apache-spark amazon-s3 parquet

使用预先存在的数据集

s3://data/id=1/file.parquet
s3://data/id=2/file.parquet

传入数据框

/data/id=3/

如果传入的数据是用SaveMode.Append

写的

df.write.partitionBy("id").mode(SaveMode.Append).parquet("s3://data/")

如果预先存在的数据集中的任何数据将被复制到创建的临时目录中,该怎么办?

1 个答案:

答案 0 :(得分:3)

我的Spark应用程序中有一个非常相似的用例,但我不确定你的问题到底是什么,所以我会试着解释一下。

在写入id = 3的数据时,您建议现有数据的方式保持不变,数据将附加到s3:// data / s3:// data / id = 3。

使用partitionBy时路径是基本路径,所以如果您使用覆盖模式现有文件(s3:// data / id = 1 / ,s3:// data / id = 2 / )会被删除。

因为这是附加的,所以没有冲突。

你问过临时目录..如果你的意思是_temporary目录Hadoop输出提交者在提交文件之前用来写文件,而只是在写入数据时只有与最后一次写入相关的文件,一旦提交它们就会被删除。