从 Azure Databricks 查询 SAP 表
Posted
技术标签:
【中文标题】从 Azure Databricks 查询 SAP 表【英文标题】:Query on SAP table from Azure Databricks 【发布时间】:2021-12-28 04:25:09 【问题描述】:我想从数据块中查询 SAP 表。 我已经安装了用于连接 SAP 服务器的 JDBC 库。我能够使用 spark.read.JDBC(url = jdbcUrl, table = query, properties = connectionProperties) 连接和获取记录。在表参数中,我提供了架构和表名。我想获取选择性记录。有什么方法可以提供查询吗?
【问题讨论】:
你的意思是选择性-阅读特定记录?还是WHERE = ...
?
是的,使用 where 条件。不只提供模式和表名,而是执行查询
SAP 是一家软件公司,他们发布了许多不同的软件。 “SAP 表”的意义不大,你可能会指出数据库软件的名称。
准确地说是 SAP HANA
【参考方案1】:
您只需要使用标准的 Spark 函数,例如 .filter
/.where
- Spark 会将其转换为相应的 SQL 查询并将其推送到数据库。如您在documentation 中所见,此功能(谓词下推)在 Spark 中默认启用。
df = spark.read.JDBC(url = jdbcUrl, table = query,
properties = connectionProperties)
filtered = df.filter("condition")
【讨论】:
感谢您的回复。但是这种方式我在数据帧上查询,有什么方法可以查询表本身,因为表包含大量数据,我不想获取所有记录。 查询数据框将自动转换为查询表 - 这是称为谓词下推的功能。当您执行 .read 时,由于 Spark 是惰性的,因此不会完全读取表。因此,您可以进行过滤等。当您触发“动作”时,会发生实际读取。我建议阅读 Learnign Spark 书籍的第一章 - 它可以从 Databricks 网站免费获得 我尝试过使用过滤器,但仍然需要太多时间来加载数据。应该在一分钟以内的数据加载大约需要 30 分钟。filtered.explain()
产生了什么?以上是关于从 Azure Databricks 查询 SAP 表的主要内容,如果未能解决你的问题,请参考以下文章
Azure Databricks SparkSQL 是不是支持递归查询
使用 Databricks 中的原始 SQL 直接查询存储在 Azure Data Lake 中的 avro 数据文件
Azure Databricks - 从 Gen2 Data Lake Storage 运行 Spark Jar