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 写入具有给定模式的表的动态创建的主要内容,如果未能解决你的问题,请参考以下文章
PySpark:如何将具有 SparseVector 类型的列的 Spark 数据帧写入 CSV 文件?