【发布时间】:2022-01-13 22:59:52
【问题描述】:
我将以下 Spark 数据帧附加到现有的 Redshift 数据库。如果month = '2021-12' and state = 'ga'
我们要附加的数据框:df
| month | state | product |
|---|---|---|
| 2021-12 | ca | ho0 |
| 2021-12 | ca | ho1 |
| 2021-12 | ca | ho2 |
| 2021-12 | ca | ho3 |
| 2021-12 | ca | ho4 |
| 2021-12 | ga | ho5 |
| 2021-12 | ga | ho6 |
| 2021-12 | ga | ho7 |
| 2021-12 | ga | ho8 |
| 2021-12 | ga | ho9 |
我尝试了以下脚本来附加它,看起来它只附加 df 数据帧,而不替换(覆盖)“2021-12”月和状态“ga”的现有记录。
df.write \
.format("xxx") \
.option("url", "xxx") \
.option("dbtable", "table1") \
.option("tempdir", "xxxx") \
.option("aws_iam_role", "xxxx") \
.mode("append") \
.option("replaceWhere", "month == '2021-12' AND state == 'ga'") \
.save()
我猜.option("replaceWhere", "month == '2021-12' AND state == 'ga'") 不工作。我怎样才能做出改变?谢谢!
(我也试过下面的部分,好像现有的记录都没有了,换成df)
.mode("overwrite") \
.option("replaceWhere", "month == '2021-12' AND state == 'ga'") \
【问题讨论】:
-
由于我使用的是databricks,所以不支持这种部分更新/覆盖;需要依赖 Delta Lake 目前正在尝试:docs.databricks.com/delta/delta-update.html#language-python
-
不确定你的观点是否正确
标签: dataframe pyspark append amazon-redshift write