如何调用Foundry SQL Server的Direct Read Engine?
Foundry JDBC/ODBC SQL访问引擎问题
通过Foundry官方文档可知,用JDBC/ODBC以SQL方式访问Foundry时有两种后端引擎可选:
- Spark Engine
- Direct Read Engine(DRE)
DRE理论上适合通过简单过滤提取大量数据,但我用ODBC(pyodbc)对大型数据集执行简单SQL查询时遇到了问题,且除官方文档外几乎找不到该功能的相关资料。我的查询完全符合文档定义的4项约束:
- 底层存储为支持的parquet格式
- 查询无SQL计算需求
- 所有列均为基础类型,非
array、map、struct类型 - 过滤条件为
col op constant形式,操作符属于=、!=、<>、>、>=、<、<=中的一种
带=过滤条件的大型数据集查询
执行以下SQL:
SELECT col FROM "/project/my_dataset" WHERE date = ?
或
SELECT col FROM "/project/my_dataset" WHERE date = '2000-01-01'
返回数据限制错误,说明实际使用的是Spark Engine:
Failed to get results - Executing query failed. FAILED_TO_EXECUTE - The result size of this query exceeds the maximum allowed result size of 1g. Please filter down on the number of rows and columns and try again.
无过滤条件的查询
执行以下SQL:
SELECT col FROM "/project/my_dataset"
返回错误:
Failed to get results - Query execution failed - INTERNAL (FoundrySqlServer:QueryFailed) with instance ID
这说明无过滤的查询被区别对待,是不是没用到Direct Read Engine(DRE)?
内容的提问来源于stack exchange,提问作者user5233494
相关产品推荐
相关产品推荐

