【发布时间】:2020-10-09 15:59:19
【问题描述】:
1) 我正在从 Postgres 读取如下表格并创建一个数据框
df = spark.read.format("jdbc").option("url", url). \
option("query", "SELECT * FROM test_spark"). \
load()
2) 更新数据框df中的一个值
newDf = df.withColumn('id',F.when(df['id']==10,20).otherwise(df['id']))
3) 我正在尝试将数据插入 Postgres 表。
--下面的代码是清除表格数据
newDf.write.mode("overwrite").option("upsert", True).\
option("condition_columns", "id").option("truncate", True).\
format("jdbc").option("url", url).option("dbtable", "test_spark").save()
--下面的代码工作正常。
newDf.write.mode("overwrite").option("upsert", True).\
option("condition_columns", "id").option("truncate", True).\
format("jdbc").option("url", url).option("dbtable", "test_spark1").save()
问题:当我尝试将更新的数据帧写回同一个表(即 test_spark)时,表数据被清除,但当它是新表(即不存在的表)时,它工作正常。
【问题讨论】:
标签: postgresql jdbc pyspark