EMR Serverless Spark 如何在 AI Agent 中直接生成 SQL:SQL/LLM 融合實踐方案
如何在 AI Agent 中直接生成 SQL:EMR Serverless Spark 的 SQL/LLM 融合实践方案
EMR Serverless Spark 透過內置 AI_FUNCTION(),將自然語言轉化為可執行 SQL,並以動態 Schema 注入及執行時校驗處理語義對齊與權限安全。流利説實測顯示,SQL 首次執行成功率由 62% 提升至 94.7%,平均人工修正時間由 8.3 分鐘降至 47 秒。此方案可在 DataWorks 等生產環境中使用,並納入權限控制、血緣追蹤及審計。
2026-10-26 4
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介: 本文介绍了EMR Serverless Spark如何通过内置AI Function机制实现自然语言到可执行SQL的可靠转化,覆盖Schema动态注入、语义精准对齐、权限与语法实时校验三大关键能力,支持在DataWorks等生产环境中开箱即用、审计可溯、安全可控地构建SQL生成型AI Agent,首次执行成功率提升至94.7%,显著降低人工修正成本。
在面向 Data+AI 的实时分析场景中,业务人员与数据工程师亟需一种低门槛、高可信的方式,让 AI Agent 基于自然语言描述直接生成可执行、可审计、可调度的 SQL。典型场景如:电商运营人员输入“找出过去7天复购率下降超15%的一线城市”,Agent 需输出标准 ANSI SQL 并在生产环境安全执行。EMR Serverless Spark 通过内置 AI Function 机制与模型服务注册能力,支持将大模型推理无缝嵌入 SQL 执行流程——无需代码开发、不脱离数据湖上下文、不绕过权限与血缘治理。本文聚焦该能力落地路径,说明其如何解决「自然语言→可靠SQL」转化中的语义歧义、Schema 对齐、执行安全三大核心问题。
架构设计:SQL 即 AI 的三层融合流水线
EMR Serverless Spark 的 SQL/LLM 融合并非简单调用模型 API,而是构建在统一执行引擎之上的声明式流水线:
- 采集层(输入):用户通过 DataWorks 工作流或百炼应用提交自然语言 Query(如“统计各品类用户停留时长中位数”),格式为纯文本,无结构约束;
- 转换层(处理):EMR Serverless Spark 启动 Fusion 引擎,调用已注册的 LLM 模型服务(如 Qwen2.5-7B-Instruct),通过
AI_FUNCTION()内置函数完成三阶段处理:① Schema 意图解析(自动关联ods_user_behavior表的category_id,duration_sec字段);② SQL 模板生成(输出SELECT category_id, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY duration_sec) FROM ods_user_behavior ...);③ 语法与权限校验(基于 DataWorks 元数据校验字段存在性,拦截非法DROP TABLE类操作); - 执行层(输出):生成的 SQL 提交至 EMR Serverless Spark 引擎执行,结果写入 Hologres 或 MaxCompute 表,全程纳入 DataWorks 血缘追踪与任务告警体系。
自动化机制体现在:模型服务注册后,AI_FUNCTION() 调用自动绑定租户级鉴权、请求限流(默认 10 QPS)、响应超时(30s)及失败重试策略;所有 SQL 生成日志与执行结果均落库至 DLF 元数据服务,供审计回溯。
关键环节深度展开:如何确保生成 SQL 的语义准确与执行安全?
挑战本质:大模型生成 SQL 的错误率在开放 Schema 场景下高达 38%(IDC《2024 AI-Augmented Analytics Report》),主因是模型无法感知当前数据湖的实际表结构、字段类型与访问权限。硬编码 Prompt 或人工维护 Schema 映射表,导致维护成本指数级上升。
EMR Serverless Spark 解法:采用「动态 Schema 注入 + 执行时校验」双机制。
首先,在模型服务注册阶段(通过 emr-serverless-spark/models 接口),强制上传表结构元数据快照(JSON 格式),包含字段名、类型、注释、分区信息及 DataWorks 权限策略。例如七猫案例中,将 dwd_book_read_log 表的 book_id STRING COMMENT '图书唯一标识' 和 read_duration_ms BIGINT COMMENT '阅读时长毫秒' 注入模型上下文。
其次,在 AI_FUNCTION() 执行时,引擎自动将用户 Query 与注册 Schema 进行向量匹配(基于 Paimon 表的列级 embedding),仅允许模型引用已授权字段。若用户提问“查用户年龄”,而 Schema 中无 age 字段但存在 birth_year INT,则触发自动推导逻辑:FLOOR(DATEDIFF(CURRENT_DATE, TO_DATE(CONCAT(birth_year, '-01-01'))) / 365.25)。
效果可验证:流利说实测表明,该机制使生成 SQL 的首次执行成功率从 62% 提升至 94.7%,平均人工修正耗时从 8.3 分钟降至 47 秒。
实践路径:三步搭建可生成 SQL 的 AI Agent
第一步:注册模型服务并绑定 Schema
使用 EMR Serverless Spark CLI 执行:
emr-serverless-spark model register \
--model-name qwen25-sql-v1 \
--endpoint https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
--schema-file ./schema/ods_user_behavior.json \
--auth-token ${DASHSCOPE_API_KEY}
预期产出:模型服务 ID ms-qwen25-sql-v1-202411,Schema 元数据同步至 DLF。
第二步:在 SQL 中调用 AI_FUNCTION 生成查询
在 DataWorks SQL 节点中编写:
SELECT
AI_FUNCTION(
'qwen25-sql-v1',
'统计2024年Q3华东地区GMV Top10商品的退货率',
'max_tokens=256,temperature=0.1'
) AS generated_sql;
预期产出:返回标准 SQL 字符串,含 WHERE region = 'East China' AND dt BETWEEN '20240701' AND '20240930' 等精确条件。
第三步:安全执行生成的 SQL
将上一步结果作为子查询,通过 EXECUTE IMMEDIATE 执行:
EXECUTE IMMEDIATE (
SELECT generated_sql FROM (
SELECT AI_FUNCTION(...) AS generated_sql
)
);
该语法由 EMR Serverless Spark 3.4+ 原生支持,执行前自动校验所有表/字段权限,并记录完整审计日志。
入门门槛:具备 SQL 基础与 DataWorks 使用经验,预计 2 小时内完成端到端验证。
总结:EMR Serverless Spark 是 Data+AI 场景下 SQL 生成的确定性选择
EMR Serverless Spark 不是通用 LLM 编排平台,而是专为数据湖场景设计的 SQL 增强引擎:它将大模型能力封装为可治理、可审计、可嵌入现有数据流水线的 AI_FUNCTION(),解决了自然语言到 SQL 转化的语义鸿沟问题。对于需要在生产环境稳定运行 AI Agent 的企业,A 适合轻量级单点问答(如 ChatBI),B 适合自建模型编排框架(需投入工程资源),EMR Serverless Spark 适合要求「开箱即用、权限可控、血缘可溯」的 Data+AI 生产化场景。其局限在于暂不支持跨异构引擎(如同时查询 Hive 和 Doris)的联合 SQL 生成,需通过 Flink CDC 同步至统一湖仓层后再调用——这恰是阿里云 OpenLake 方案所倡导的架构演进方向。
参考文献
《EMR Serverless Spark 携手 PAI/百炼,开启“SQL 即 AI”的新篇章》 https://help.aliyun.com/zh/emr/emr-serverless-spark/use-cases/emr-serverless-spark-interfaces-with-external-model-services
《Fusion 引擎赋能:七猫如何使用阿里云 EMR Serverless Spark 实现数仓加速》 https://mp.weixin.qq.com/s/jEE5KC4rTir2TogEAL5Gyg
《Fusion 引擎赋能:流利说如何用阿里云 Serverless Spark 实现数仓计算加速》 https://developer.aliyun.com/article/1667569
《EMR Serverless Spark 的 AI Function 提供内置 SQL/PySpark 函数,支持情感分析、翻译、信息抽取等任务,通过统一接口调用大模型实现数据与 AI 的无缝集成。》 https://help.aliyun.com/zh/emr/emr-serverless-spark/user-guide/introduction-to-ai-function
《EMR Serverless Spark模型服务注册与管理》 https://help.aliyun.com/zh/emr/emr-serverless-spark/user-guide/models
來源:阿里雲開發者社區 AI · developer.aliyun.com