首页 > 解决方案 > 在 Databricks 和 MS SQL Server 中比较表中的数据

问题描述

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

谢谢!

标签: sqlapache-sparkdatabricksaws-databricks

解决方案


您可以仅使用 Spark 支持的标准 JDBC 接口连接到 SQL 服务器——databricks 运行时应该包含开箱即用的 MS SQL 驱动程序。读取数据时,您可以在 SQL Server 数据和 Databricks 中的数据之间进行反连接。像这样的东西(在 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 读取,请按照有关如何优化读取性能的说明进行操作,但这可能取决于您的实际架构。


推荐阅读