我有一个很小的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管道的一部分。不幸的是,它...
您无法在Spark中使用带有数据帧的jdbc进行单条记录更新。您只能追加或替换整个表。