Azure 使用JDBC从Pyspark更新表

Azure 使用JDBC从Pyspark更新表,azure,pyspark,databricks,Azure,Pyspark,Databricks,我有一个小的日志数据框,其中包含关于在给定笔记本中执行的ETL的元数据,笔记本是Azure DataFactory中管理的更大的ETL管道的一部分 不幸的是,Databricks似乎无法调用存储过程,所以我正在手动向日志表中添加一行正确的数据 但是,在给定一组条件的情况下,我无法找到更新表的正确sytnax: 我用于附加单行的语句如下所示: spark_log.write.jdbc(sql_url, 'internal.Job',mode='append') 但是,当我的数据工厂调用一个存储过

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

不幸的是,Databricks似乎无法调用存储过程,所以我正在手动向日志表中添加一行正确的数据

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

我用于附加单行的语句如下所示:

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数据库


再加上这是一个很小的操作,所以性能不是问题

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


您可以使用pyodbc进行更新-需要安装MSSQL ODBC驱动程序(),或者您可以通过JayDeBeApi()使用jdbc来更新此处的任何迷失灵魂,我的解决方法是在我的datafactory管道中完成笔记本时传递一个json blob,然后将其解析出来,并作为参数传递给我存储的Proc,这反过来更新了我的日志表。