apache-spark - Spark overwrite 删除了 db2 中已有表的权限

标签 apache-spark db2

我正在使用 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/

相关文章:

java - DB2 JDBC SSL 连接

sql - 使用 DB2 SQL,对于不属于 where 子句的条件,如何避免返回不是最新的行?

java - 将 LocalDateTime 保存到 DB2 TIMESTAMP 列中

mysql - Spark Mysql 快速更新

hadoop - Spark在内存中执行TB文件

java - 在 JBOSS for DB2 中创建数据源

windows - 通过命令行以人类可读的格式导出 DB2 模式?

hadoop - 来自 Kafka 的 Spark 流式传输在本地返回结果但不适用于 Yarn

scala - 在现有数据框上使用 foldLeft 输出数据框

sql - scala中的动态where条件生成