gpt4 book ai didi

azure - 使用 JDBC 从 Pyspark 更新表

转载 作者:行者123 更新时间:2023-12-02 23:27:05 24 4
gpt4 key购买 nike

我有一个小的 log 数据框,其中包含有关给定笔记本中执行的 ETL 的元数据,该笔记本是更大的 ETL 的一部分在 Azure DataFactory 中管理的管道。

不幸的是,Databricks 似乎无法调用存储过程,因此我手动将包含正确数据的行附加到我的日志表中。

但是,在给定一组条件的情况下,我无法找出更新表的正确语法:

我用来追加单行的语句如下:

spark_log.write.jdbc(sql_url, 'internal.Job',mode='append')

然而,由于我的数据工厂正在调用存储过程,所以这工作得很好,

我需要处理像这样的查询

query  = f"""
UPDATE [internal].[Job] SET
[MaxIngestionDate] date {date}
, [DataLakeMetadataRaw] varchar(MAX) NULL
, [DataLakeMetadataCurated] varchar(MAX) NULL
WHERE [IsRunning] = 1
AND [FinishDateTime] IS NULL"""

这可能吗?如果是这样,有人可以告诉我怎么做吗?

查看文档,这似乎只提到使用带有 query 参数的 select 语句:

目标数据库是 Azure SQL 数据库。

https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html

仅补充一下,这是一个很小的操作,因此性能不是问题。

最佳答案

您无法在 Spark 中使用 jdbc 和数​​据帧进行单条记录更新。您只能追加或替换整个表。

您可以使用 pyodbc 进行更新 - 需要安装 MSSQL ODBC 驱动程序 ( How to install PYODBC in Databricks ),或者您可以通过 JayDeBeApi 使用 jdbc ( https://pypi.org/project/JayDeBeApi/ )

关于azure - 使用 JDBC 从 Pyspark 更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59612337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com