spark s3增量负载实木复合地板覆盖特定分区

时间:2018-10-23 00:42:09

标签: python apache-spark amazon-s3 pyspark overwrite

我的数据是实木复合地板,并在S3中进行了分区。这实际上是一个增量负载,但使用S3。我有两个数据集,一个是最新数据,另一个是已更改数据。我可以根据df中的日期使用过滤器过滤所需的分区,然后加入df2,然后执行“ upsert”。

现在,我想写回S3 source2存储桶,但只覆盖已更改的分区。如果我使用.mode('overwrite'),它将删除所有内容,然后写入;而且我不想追加,我想覆盖/“更新”更改后的数据。

我正在使用Spark v2.2,得知此功能是在2.3中添加的,但是这应该是其他人对<2.3有解决方法的问题。

source1 = "s3://bucket/changed_data"
source2 = "s3://bucket/current_data"

/date=2018-01-01/something.parquet
/date=2018-01-02/something.parquet
...

df = spark.read.parquet(source1)
# get dates for filter
df2 = spark.read.parquet(source2).filter("where date = '2018-01-01")

df3 = # join df and df2, do some stuff, get latest record...
df3.write.parquet(source2)

0 个答案:

没有答案