我正在使用 spark 集群将 parquet 文件移动到 DB2 表中。这些 DB2 表是已定义和预制的,但是是空的。它还授予某些用户一些特权。但是,如果我在 spark 中使用此代码:
ds.get
.coalesce(1)
.write
.mode(SaveMode.Overwrite)
.jdbc(fullJdbcUrl, tableName, props)
为了移动 parquet 数据,它删除了授权状态(在 SYSIBMADM 中)并且似乎删除并创建了一个表,而不是使用已经存在的表。我不想使用 SaveMode.Append 因为在某些情况下可能已经有数据了。有没有一种方法可以删除 Spark 中表中的行(以便我可以在之后使用 Append),或者强制它使用已经创建的表?谢谢。
最佳答案
在 2.1 中,Spark 添加了对 truncate
JDBC DataFrameWriter 的支持。
ds.get
.coalesce(1)
.write
.mode(SaveMode.Overwrite)
.option("truncate", true)
.jdbc(fullJdbcUrl, tableName, props)
这里是关于truncate的详细信息
关于apache-spark - Spark overwrite 删除了 db2 中已有表的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026822/