使用JDBC从Pyspark更新表

问题描述 投票:1回答:1

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

不幸的是,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"""

这可能吗?如果可以的话,有人可以告诉我如何?

看文档,似乎只提到使用select参数和query语句:

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

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

仅添加此操作是很小的操作,因此性能不是问题。

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

azure pyspark databricks
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.