Pyspark 数据框:将 jdbc 写入具有给定模式的表的动态创建

Posted

技术标签:

【中文标题】Pyspark 数据框:将 jdbc 写入具有给定模式的表的动态创建【英文标题】:Pyspark dataframe: write jdbc to dynamic creation of table with given schema 【发布时间】:2020-06-22 06:52:37 【问题描述】:

有没有办法从 pyspark 数据帧动态创建具有给定架构的表,就像我们使用 pandas 数据帧的 to_sql 方法一样。

类似地,我们可以从 pyspark 数据框创建具有给定架构的表吗?

df.write.jdbc("jdbc:postgresql://localhost:5432/postgres", "sample_data1",mode="overwrite", properties=prop);

在上面的代码中,我们如何给出schema来生成我们想要的表?

【问题讨论】:

【参考方案1】:

我认为您正在寻找这些选项-

createTableOptions

这是一个与 JDBC 编写器相关的选项。如果指定,此选项允许在创建表时设置特定于数据库的表和分区选项(例如,CREATE TABLE t (name string)ENGINE=InnoDB.)。此选项仅适用于写作。

createTableColumnTypes

创建表时要使用的数据库列数据类型,而不是默认值。数据类型信息应以与 CREATE TABLE 列语法相同的格式指定(例如:"name CHAR(64), comments 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",
          properties="user": "username", "password": "password")

参考-spark-doc

【讨论】:

以上是关于Pyspark 数据框:将 jdbc 写入具有给定模式的表的动态创建的主要内容,如果未能解决你的问题,请参考以下文章

创建并写入数据库 JDBC PySpark

PySpark:如何将具有 SparseVector 类型的列的 Spark 数据帧写入 CSV 文件?

Pyspark:将df写入具有特定名称的文件,绘制df

使用 PySpark JDBC 将数据帧写入 Azure SQL 数据库时性能下降

以追加模式写入pyspark中的红移

DSX PySpark 使用自定义 JDBC 方言将数据写入 dashDB