首页 > 解决方案 > Pyspark 数据框:将 jdbc 写入具有给定模式的表的动态创建

问题描述

有没有一种方法可以从 pyspark 数据框中动态创建具有给定模式的表,就像我们使用 pandas 数据框的to_sql方法一样。

同样,我们可以从 pyspark 数据框中创建具有给定模式的表吗?

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

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

标签: pythonpandaspostgresqlpyspark

解决方案


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

创建表选项

这是与 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"})

参考 -火花文档


推荐阅读