通过 PySpark 向外部数据库写入数据
Writing Data to External Databases Through PySpark
我想将数据从 PySpark DataFrame 写入外部数据库,比如 Azure MySQL 数据库。到目前为止,我已经设法使用 .write.jdbc()
、
做到了这一点
spark_df.write.jdbc(url=mysql_url, table=mysql_table, mode="append", properties={"user":mysql_user, "password": mysql_password, "driver": "com.mysql.cj.jdbc.Driver" })
在这里,如果我没记错的话,mode
可用的选项只有append
和overwrite
,但是,我想对数据的写入方式有更多的控制.比如我希望能够进行更新和删除操作
我该怎么做?是否可以说,编写 SQL 查询将数据写入外部数据库?如果是,请举个例子。
首先,我建议您使用特定的 Azure SQL 连接器。 https://docs.microsoft.com/en-us/azure/azure-sql/database/spark-connector.
那么我建议您使用 bulk mode,因为逐行模式很慢,如果您打开了日志分析,可能会产生意外费用。
最后,对于任何类型的数据转换,您都应该使用 ELT 模式:
- 将原始数据加载到空暂存中table
- 运行 SQL 代码,或者更好的是执行所需逻辑的存储过程(例如合并到最终 table)run DML such as a stored proc
我想将数据从 PySpark DataFrame 写入外部数据库,比如 Azure MySQL 数据库。到目前为止,我已经设法使用 .write.jdbc()
、
spark_df.write.jdbc(url=mysql_url, table=mysql_table, mode="append", properties={"user":mysql_user, "password": mysql_password, "driver": "com.mysql.cj.jdbc.Driver" })
在这里,如果我没记错的话,mode
可用的选项只有append
和overwrite
,但是,我想对数据的写入方式有更多的控制.比如我希望能够进行更新和删除操作
我该怎么做?是否可以说,编写 SQL 查询将数据写入外部数据库?如果是,请举个例子。
首先,我建议您使用特定的 Azure SQL 连接器。 https://docs.microsoft.com/en-us/azure/azure-sql/database/spark-connector.
那么我建议您使用 bulk mode,因为逐行模式很慢,如果您打开了日志分析,可能会产生意外费用。
最后,对于任何类型的数据转换,您都应该使用 ELT 模式:
- 将原始数据加载到空暂存中table
- 运行 SQL 代码,或者更好的是执行所需逻辑的存储过程(例如合并到最终 table)run DML such as a stored proc