使用预先存在的数据集
s3://data/id=1/file.parquet
s3://data/id=2/file.parquet
和传入的Dataframe
/data/id=3/
如果传入数据是用
SaveMode.Append df.write.partitionBy("id").mode(SaveMode.Append).parquet("s3://data/")
如果先前存在的数据集中的任何数据将被复制到所创建的临时目录中,该怎么办?
使用预先存在的数据集
s3://data/id=1/file.parquet
s3://data/id=2/file.parquet
和传入的Dataframe
/data/id=3/
如果传入数据是用
SaveMode.Append df.write.partitionBy("id").mode(SaveMode.Append).parquet("s3://data/")
如果先前存在的数据集中的任何数据将被复制到所创建的临时目录中,该怎么办?
1条答案
按热度按时间icnyk63a1#
我在spark应用程序中有一个非常类似的用例,但我不确定您的问题到底是什么,所以我将试着大致解释一下。
在id=3的数据写入过程中,您建议的现有数据将保持不变,并且数据将附加到s3://data/id=3下的s3://data/。
使用分区时,路径是基本路径,因此如果使用覆盖模式,现有文件(s3://data/id=1/,s3://data/id=2/)将被删除。
既然这样,就没有冲突。
你问过临时目录。。如果您是指hadoop output committer在提交文件之前用来写入文件的临时目录,那么在写入数据时,只有与上次写入相关的文件才会出现,一旦提交,这些文件就会被删除。