spark Dataframe执行UPDATE语句

时间:2016-02-02 10:56:28

标签: apache-spark sql-update sql-insert spark-dataframe

Hy guys,

我需要使用Apache Spark DataFrame执行jdbc操作。 基本上我有一个名为Measures的历史jdbc表,我必须做两个操作:

1。将旧度量记录的endTime有效性属性设置为当前时间

2。将新的度量记录设置endTime插入9999-12-31

有人可以告诉我如何执行(如果可以)更新第一个操作的语句并插入第二个操作吗?

我尝试将此语句用于第一个操作:

val dfWriter = df.write.mode(SaveMode.Overwrite)
dfWriter.jdbc("jdbc:postgresql:postgres", tableName, prop)

但它不起作用,因为存在重复的密钥违规。如果我们可以做更新,我们怎么做delete语句?

提前致谢。

1 个答案:

答案 0 :(得分:3)

我不认为Spark支持开箱即用。您可以使用foreachRDD()循环遍历数据框/ RDD并使用JDBC API手动更新/删除表。

这里是一个类似问题的链接: Spark Dataframes UPSERT to Postgres Table