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,这反过来更新了我的日志表。