sql - 在 Databricks 和 MS SQL Server 中比较表中的数据
问题描述
我必须将 databricks 中的表与 SQL Server 中的同一表进行比较,并且只将丢失的记录填充到 databricks 中。有人可以帮助我如何使用 databricks 连接到 SQL Server,如何以及在何处编写将填充缺失数据的查询。
谢谢!
解决方案
您可以仅使用 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 读取,请按照有关如何优化读取性能的说明进行操作,但这可能取决于您的实际架构。
推荐阅读
- reactjs - 如何使用带有自定义登录页面的 Keycloak 登录并接受同意
- android-recyclerview - Recyclerview 不更新 ROOM sqlite 数据
- c# - 如何使用 URI 参数调用 PUT 方法(不是直接查询字符串)
- node.js - 如何在 github 页面上托管 react + nodejs 应用程序?
- angular - 在从 Angular 对 SignalR 集线器的调用中包含身份验证标头(带有访问令牌)
- javascript - Javascript adobe Illustrator JSON 未定义 - 解码 JSON 编码的剪贴板数据
- redux - 重新选择:将多个参数传递给组合选择器
- php - 刷新页面时如何防止SQL查询再次执行?
- c# - 如何通过单击进入 ItemsControl MVVM 更改 TextBlock 的数据绑定?
- android - ExpandableListView 点击事件不起作用