问题描述
我必须将 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的说明进行操作,但这可能取决于您的实际架构。