如果 Dataframe 具有不同的模式,则使用附加模式的 Spark JDBC Oracle 写入也会更改表模式
Posted
技术标签:
【中文标题】如果 Dataframe 具有不同的模式,则使用附加模式的 Spark JDBC Oracle 写入也会更改表模式【英文标题】:Spark JDBC Oracle write using Append mode also changing the table schema if Dataframe has different schema 【发布时间】:2019-08-29 09:29:09 【问题描述】:如果 Dataframe 具有不同的架构,则使用附加模式的 Spark JDBC Oracle 写入也会更改表架构。 是否有任何选项可以防止 spark 在追加时更改 oracle 元数据?
【问题讨论】:
如果输出的数据不同怎么办? @Murali- 你写得怎么样?你能显示代码吗? 额外的列或数据类型? blog.kprajapati.com/… 【参考方案1】:根据spark sql数据源官方文档,见https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html。
您可以使用 createTableColumnTypes :创建表时要使用的数据库列数据类型,而不是默认值。数据类型信息应以与 CREATE TABLE 列语法相同的格式指定(例如:“name CHAR(64), cmets VARCHAR(1024)”)。指定的类型应该是有效的 spark sql 数据类型。此选项仅适用于写作。
// Specifying create table column data types on write
jdbcDF.write
.option("createTableColumnTypes", "name CHAR(64), comments VARCHAR(1024)")
.jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties)
例如,它使用 postgresql 但您可以使用 oracle jdbc driver 。
【讨论】:
以上是关于如果 Dataframe 具有不同的模式,则使用附加模式的 Spark JDBC Oracle 写入也会更改表模式的主要内容,如果未能解决你的问题,请参考以下文章