能否使用Databricks SQL Restful API从外部UI查询ADLS中的Delta表及实现方法?
用Databricks SQL REST API查询ADLS中的Delta表
当然可以实现这个需求,核心逻辑是通过外部UI调用Databricks SQL REST API,提交针对ADLS中Delta表的查询请求,由Databricks完成ADLS访问、Delta表解析和查询执行,最后返回结果给外部UI。以下是具体的实现步骤和关键细节:
前置准备
- 你的Databricks Workspace已经配置好ADLS的访问权限(比如通过Azure AD服务主体、SAS令牌等方式),确保Databricks能正常读取目标Delta表
- 生成Databricks个人访问令牌(PAT),权限至少包含
sql/queries:read和sql/queries:execute - 确认Databricks Workspace的基础URL(格式类似
https://<workspace-id>.azuredatabricks.net)
具体操作步骤
1. 提交查询请求
你可以选择执行临时查询,或者先创建保存的查询再执行:
- 临时查询:发送POST请求到
/api/2.0/sql/statements,请求体示例:
{ "statement": "SELECT * FROM delta.`abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path-to-delta-table>` LIMIT 50" }
- 保存的查询:先发送POST请求到
/api/2.0/sql/queries创建查询(复用场景更合适),请求体示例:
{ "name": "ADLS Delta表查询", "query": "SELECT count(*) FROM delta.`abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path-to-delta-table>`" }
创建成功后会返回查询ID,后续通过POST请求/api/2.0/sql/queries/<query-id>/execute触发执行。
2. 检查执行状态
查询提交后,会获得一个execution_id,发送GET请求到/api/2.0/sql/executions/<execution-id>,查看响应中的status.state字段:
- 当状态为
SUCCEEDED时,说明查询执行完成 - 如果是
RUNNING则需要等待,FAILED则需要检查查询语句或权限配置
3. 获取查询结果
状态成功后,发送GET请求到/api/2.0/sql/executions/<execution-id>/result,即可获取结构化的查询结果(JSON格式,包含列定义和行数据),外部UI可以直接解析并展示这些数据。
关键注意事项
- 所有API请求的Headers必须包含
Authorization: Bearer <你的PAT令牌>,否则会被拒绝访问 - Delta表的路径必须使用正确的ADLS URI格式(
abfss://开头),确保Databricks能识别为Delta表 - 外部UI可以通过轮询
execution接口的方式,实时获取查询执行状态,避免阻塞 - 确保PAT令牌的权限范围足够,若出现权限错误,需要在Databricks中调整令牌的权限配置
内容的提问来源于stack exchange,提问作者krishcoolster
相关产品推荐
相关产品推荐

