从 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

Azure 数据流 - 源查询下推

从 Azure Databricks 将数据写入 Azure Blob 存储

作业终止后如何将生成的文件从 Azure Databricks 导出到 Azure DevOps?