通过 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可用的选项只有appendoverwrite,但是,我想对数据的写入方式有更多的控制.比如我希望能够进行更新和删除操作

我该怎么做?是否可以说,编写 SQL 查询将数据写入外部数据库?如果是,请举个例子。

首先,我建议您使用特定的 Azure SQL 连接器。 https://docs.microsoft.com/en-us/azure/azure-sql/database/spark-connector.

那么我建议您使用 bulk mode,因为逐行模式很慢,如果您打开了日志分析,可能会产生意外费用。

最后,对于任何类型的数据转换,您都应该使用 ELT 模式:

  1. 将原始数据加载到空暂存中table
  2. 运行 SQL 代码,或者更好的是执行所需逻辑的存储过程(例如合并到最终 table)run DML such as a stored proc