比较 Databricks 和 MS SQL Server 中表中的数据

问题描述

我必须将 databricks 中的表与 sql Server 中的同一个表进行比较,并仅将丢失的记录填充到 databricks 中。有人可以帮助我如何使用 databricks 连接到 sql Server,如何以及在何处编写将填充缺失数据的查询

谢谢!

解决方法

您可以仅使用 Spark 支持的标准 JDBC 接口连接到 SQL 服务器 - 数据块运行时应包含 drivers for MS SQL out of box。读取数据时,您可以在 SQL 服务器数据和 Databricks 中的数据之间执行 anti join。像这样(在 Python 中):

jdbc_url = f"jdbc:sqlserver://{hostname}:{port};database={database}"
sql_data = spark.read.jdbc(jdbc_url,"your_table",connectionProperties)
your_data = spark.read.format("delta").load("path")
# get difference between datasets
diff = sql_data.join(your_data,<join-condition>,"leftanti")
# work with diff

要从 SQL Server 读取,请按照有关如何optimize read performance的说明进行操作,但这可能取决于您的实际架构。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...