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语句?
提前致谢。
答案 0 :(得分:3)
我不认为Spark支持开箱即用。您可以使用foreachRDD()循环遍历数据框/ RDD并使用JDBC API手动更新/删除表。
这里是一个类似问题的链接: Spark Dataframes UPSERT to Postgres Table