创建并写入数据库 JDBC PySpark
Posted
技术标签:
【中文标题】创建并写入数据库 JDBC PySpark【英文标题】:Create and write to a database JDBC PySpark 【发布时间】:2020-10-10 08:19:35 【问题描述】:我有一个希望写入数据库表的数据框,但是使用以下命令:
df.select("id", "scale", "mentions")\
.write.format("jdbc") \
.option("url", "jdbc:postgresql://ec2xxxxamazonaws.com:xxxx/xxxx") \
.option("dbtable", 'table) \
.option("user", "xxxx") \
.option("password", "xxxx") \
.option("driver", "org.postgresql.Driver").mode('append').save()
我无法写入数据库,因为该表已经存在,因为我通过 DB EC2 实例上的 psql 创建了它。
我的问题是,有没有办法在 spark python 程序本身中创建表、插入查询?
【问题讨论】:
【参考方案1】:据我所知,您可以简单地使用“追加”的保存模式,以便将数据框插入到 PostgreSQL 上的预先存在的表中。
试试下面的:
df.write.format('jdbc').options(
url='jdbc:postgresql://ec2xxxxamazonaws.com:xxxx/xxxx',
driver='org.postgresql.Driver',
dbtable='table',
user='xxxx',
password='xxxx').mode('append').save()
但是,请记住,这仅在表没有约束(即主键列或索引)时才有效。因此,当您的表和插入操作包含更多复杂性时,通常会有更好的实现选项。试试这篇文章作为入门:https://medium.com/@radek.strnad/tips-for-using-jdbc-in-apache-spark-sql-396ea7b2e3d3
【讨论】:
最初我所做的是在我的数据库实例上创建一个表,然后使用 spark 将数据帧插入到该表中,这就是我收到此错误的时候 @gammauniversity 你能给出你的表在PostgreSQL中的模式吗?文档将上述代码作为一种将数据框插入到现有 PostgreSQL 表中的方法。 table (event int not null, numsources int, nummentions int) 这是schema,和我的dataframe一样 @gammauniversity 请发布您收到的错误消息,我们将从那里继续。以上是关于创建并写入数据库 JDBC PySpark的主要内容,如果未能解决你的问题,请参考以下文章
(Pyspark 使用 JDBC 写入 postgres 失败并出现 NullPointerException
使用 PySpark JDBC 将数据帧写入 Azure SQL 数据库时性能下降