AI Function 是 EMR Serverless Spark 内置的 AI 能力集成层,让数据工程师无需 SDK、API 或模型运维,即可在 SQL/PySpark 中直接调用大模型完成情感分析、翻译、抽取等任务。
概述
AI Function 是 EMR Serverless Spark 提供的一组内置的 SQL / PySpark 函数,旨在以最少的配置将生成式 AI 与传统数据处理有效连接。这些函数被划分为两类:
通用函数 (
ai_query()):以统一方式接入任意模型(包括内置模型、外部服务及自建服务),支持交互式推理与批量推理。任务型函数:开箱即用,能够高效完成翻译、情感分析、信息抽取、错误纠正、相似度计算及嵌入等常见任务。
内置模型默认为 qwen-plus。如果未明确指定模型,任务型函数与通用函数 (ai_query())将默认调用该模型。
使用前提
支持的引擎版本。
esr-4.x:esr-4.6.0及之后版本。
esr-3.x:esr-3.5.0及之后版本。
esr-2.x:esr-2.9.0及之后版本。
不支持场景
Kyuubi Gateway和Livy Gateway等Gateway类型任务。启用配置
必须在作业提交时添加
spark.emr.serverless.ai.function.enable trueSpark 配置以启用 AI 功能。
函数一览
函数 | 说明 | 返回类型 | 典型用法 |
| 通用模型调用接口,支持自定义 Prompt、指定模型及生成参数 | STRING | 批量摘要、信息抽取、调用外部/自建模型端点 |
| 情感分析(正/负/中性) | STRING | 舆情监控、客服评论分析、用户反馈分级 |
| 语法与用词纠错 | STRING | 生成对外文案前自动润色 |
| 多类别/多标签分类 | STRING | 工单分类(投诉/咨询/建议)、新闻主题识别、日志类型标注 |
| 从文本中提取预定义 STRUCT 结构字段 | JSON | 同关键信息抽取(甲方/金额/日期)、评论属性解析(产品/问题/满意度) |
| 计算两段文本的语义相似度(0.0–1.0) | DOUBLE | 去重、召回匹配、问答对相似性评分、RAG 相似文档检索 |
| 翻译到指定语言 | STRING | 端到端多语报表、跨境场景 |
| 优化 SQL(重写/注释建议) | STRING | 自动给出谓词下推、分桶/分区、Join 顺序建议 |
| 将 HiveQL 转换为 Spark SQL 兼容语法 | STRING | Hive 作业迁移、UDF 语法适配、窗口函数标准化 |
| 生成文本语义向量 | ARRAY<DOUBLE> | RAG 向量库构建、语义聚类、相似度召回、特征工程 |
通用函数:ai_query()
ai_query() 是 AI Function 提供的通用接口,用于执行自定义提示词(Prompt)调用大模型,支持灵活接入内置模型或外部服务。它适用于标准任务型函数无法覆盖的复杂推理、多轮指令、结构化输出等高级场景。
函数语法
ai_query(prompt_text [, service_name [, extra_options_json]])参数说明
参数
类型
是否必填
说明
prompt_textSTRING
是
发送给模型的完整提示词(Prompt),应包含上下文、指令和输入数据。建议明确指定输出格式以提升稳定性。
service_nameSTRING
否
指定要调用的模型服务名称:
• 若省略,则使用默认模型,默认为qwen-plus。• 通过模型服务注册的模型服务名称,请参见模型服务注册与调用。
extra_options_jsonSTRING
否
以 JSON 字符串 形式提供额外调用参数,用于控制生成行为。支持以下字段:
•"temperature": 控制随机性[0,1]。
•"top_p": 核采样参数。
•"max_tokens": 最大输出 token 数。
若省略,使用模型默认参数。返回值类型:STRING。
使用示例
不指定模型
-- ai_query()不指定模型 select ai_query ('请判断下面这个评论是正向还是负向?\n 这个东西相当不行');返回结果:
这个评论是负向的。 理由:“相当不行”是一种明显的否定表达,语气较强,表示对某事物的强烈不满或负面评价。因此,整体情感倾向为负向。指定模型
-- ai_query()指定‘my_qwen_service’模型 select ai_query ('请判断下面这个评论是正向还是负向?\n 这个东西相当不行', 'my_qwen_service') ;返回结果:
<think> 嗯,用户让我判断这个评论是正向还是负向。评论是“这个东西相当不行”。首先,我需要理解这句话的意思。用户说的是“这个东西”不好,所以应该属于负面评价。 接下来,我需要考虑常见的负面评价的特征。通常,负面评价会包含明显的负面词汇,比如“不行”、“不好”、“糟糕”、“糟糕的”等。这些都是典型的负面情感词汇。此外,用户用了“相当”这个词,可能是在强调程度,但主要还是在表达不满。 然后,我要考虑用户的潜在需求。用户可能是在对某个产品或服务不满意,需要判断这个评论是否有效传达了负面情绪。用户可能希望了解评论的方向,或者是否需要进一步处理。 还要注意用户可能的深层意图。用户可能是在寻找如何处理这类评论,或者是否应该进行改进。因此,回答时需要明确指出评论的负面性质,并解释原因,这样用户能清楚理解。 最后,确保回答简洁明了,直接指出评论是负向的,同时保持礼貌和专业。这样用户就能得到准确的信息,没有歧义。 </think> 这个评论是**负向**的。指定模型且指定参数
-- ai_query()指定‘my_qwen_service’模型,且指定 “{"chat_template_kwargs": {"enable_thinking": false}}”参数,关闭思维链(thinking)过程 select ai_query ( '请判断下面这个评论是正向还是负向?\n 这个东西相当不行', 'my_qwen_service', '{"chat_template_kwargs": {"enable_thinking": false}}' );返回结果:
这个评论是**负向**。
任务型函数
情感分析:ai_sentiment()
ai_sentiment() 是 AI Function 提供的情感分析专用函数,用于自动识别文本中的情绪倾向,并返回积极、消极、中性结果。适用于用户评论分析、舆情监控等场景。
函数语法
ai_sentiment(text)参数说明
参数
类型
是否必填
说明
textSTRING
是
待分析的文本内容,建议为完整句子或段落。过短或无意义文本可能影响判断准确性。
返回值类型:STRING 。
使用示例
SELECT ai_sentiment ('I absolutely love this phone! It’s amazing!');返回结果:

语法修正:ai_fix_grammar()
ai_fix_grammar() 是 AI Function 提供的语法纠错专用函数,用于自动检测并修正文本中的拼写错误、语法问题和表达不通顺之处。适用于用户生成内容清洗、客服对话优化、文档预处理等场景。
函数语法
ai_fix_grammar(text)参数说明
参数
类型
是否必填
说明
textSTRING
是
待修正的原始文本内容,建议为完整句子或段落。
返回值类型:STRING。
使用示例
SELECT ai_fix_grammar ('He go to school yesterday and dont like math.');返回结果:
He went to school yesterday and didn't like math.
文本分类:ai_classify()
ai_classify() 是 AI Function 提供的文本分类专用函数,可根据指定的标签列表对输入文本进行自动归类。适用于新闻分类、工单路由、评论主题识别等多类别分类任务。
函数语法
ai_classify(text, labels[, options])参数说明
参数
类型
是否必填
说明
textSTRING
是
待分类的文本内容,建议为完整语义单元。
labelsARRAY
是
候选分类标签数组,如
array('科技', '体育', '娱乐')。标签应具有区分性,避免语义重叠。返回值类型:String。
使用示例
SELECT ai_classify( '梅西在比赛中打入一记精彩任意球', array('科技', '体育', '娱乐', '财经') ) AS category;返回结果:
体育
信息抽取:ai_extract()
ai_extract() 是 AI Function 提供的信息抽取专用函数,可从非结构化文本中提取预定义结构的字段信息。适用于用户评论解析、合同关键信息提取、日志结构化等场景。
函数语法
ai_extract(text, schema_or_labels[, options])参数说明
参数
类型
是否必填
说明
textSTRING
是
待抽取信息的源文本内容。
schema_or_labelsARRAY
是
预定义的抽取的内容。
返回值类型:JSON。
使用示例
select ai_extract ( 'I am Alice,from china . I am 6 years old. Welcome!', Array('country', 'age', 'name') );返回结果:
{"country": "china", "age": "6", "name": "Alice"}
相似度计算:ai_similarity()
ai_similarity() 是 AI Function 提供的语义相似度计算函数,用于衡量两个文本之间的语义接近程度。基于向量余弦相似度实现,适用于重复内容识别、推荐系统、问答匹配等场景。
函数语法
ai_similarity(text1, text2)参数说明
参数
类型
是否必填
说明
text1STRING
是
第一个文本内容。
text2STRING
是
第二个文本内容。
返回值类型:DOUBLE。
使用示例
SELECT ai_similarity ( 'I enjoy hiking in the mountains.', 'I love walking through mountain trails.' );返回结果:
0.85
翻译:ai_translate()
ai_translate() 是 AI Function 提供的文本翻译专用函数,支持将输入文本自动翻译为目标语言。适用于跨语言数据分析、国际化内容处理等场景。
函数语法
ai_translate(text, target_lang)参数说明
参数
类型
是否必填
说明
textSTRING
是
待翻译的原始文本内容。
target_langSTRING
是
目标语言代码,目前支持:
•'zh':中文
•'en':英文
•'ja':日文
•'ko':韩文返回值类型:STRING。
使用示例
select ai_translate ('你来自哪儿?', 'en') ;返回结果:
Where are you from?
SQL语句优化:ai_sql_optimize()
ai_sql_optimize() 是 AI Function 提供的 SQL 优化建议生成函数,可自动分析输入的 SQL 查询语句,给出谓词下推、分桶/分区、Join 顺序建议。适用于查询提速、资源节省和执行计划改进等场景。
函数语法
ai_sql_optimize(sql_text[, options])参数说明
参数
类型
是否必填
说明
sql_textSTRING
是
待优化的 SQL 查询语句文本,建议包含完整的表结构上下文。
返回值类型:STRING 。
使用示例
SELECT ai_sql_optimize ( 'SELECT * FROM logs WHERE date = "2025-01-01" AND user_id IN (SELECT id FROM users WHERE status = "active");' );返回结果:
SELECT l.* FROM logs l JOIN users u ON l.user_id = u.id WHERE l.date = '2025-01-01' AND u.status = 'active' ;
Hive转Spark SQL:ai_sql_optimize()
ai_sql_hive_to_spark() 是 AI Function 提供的 HiveQL 到 Spark SQL 的自动转换函数,能够识别 Hive 特有语法(如 LATERAL VIEW、SORT BY 等),并将其转换为兼容 Spark SQL 的等价形式。适用于迁移 Hive 作业至 Spark 环境的场景。
函数语法
ai_sql_hive_to_spark(hql_text[, options])参数说明
参数
类型
是否必填
说明
hql_textSTRING
是
输入的 HiveQL 语句,支持复杂查询、窗口函数等语法结构。
返回值类型:STRING。
使用示例
SELECT ai_sql_hive_to_spark ( ' SELECT user_id, nvl2(email, "verified", "anonymous") AS user_type, current_date() AS load_date FROM users WHERE login_time >= date_sub(current_date(), 7) ' );返回结果:
SELECT user_id, CASE WHEN email IS NOT NULL THEN "verified" ELSE "anonymous" END AS user_type, current_date() AS load_date FROM users WHERE login_time >= date_sub(current_date(), 7)
文字向量:ai_embedding()
ai_embedding() 是 AI Function 提供的文本向量化专用函数,可将文本转换为高维语义向量(Embedding),用于语义检索、聚类、相似度计算等下游 AI 任务。
函数语法
ai_embedding(text[, options])参数说明
参数
类型
是否必填
说明
textSTRING
是
待向量化的文本内容,建议控制长度以避免截断。
optionsint
否
指定输出向量的维度,默认1024。
返回值类型:ARRAY<DOUBLE> 。
使用示例
select ai_embedding ('This is a sentence', 256);返回结果:
[-0.08807944506406784,0.041450440883636475,0.027626311406493187,-0.03082999959588051,-0.027538539841771126,0.030325308442115784,-0.0742553174495697,0.12841078639030457,-0.20047178864479065,0.2492731511592865,-0.07697625458240509,-0.0023876791819930077,0.01588677428662777,0.039453621953725815,0.035416096448898315,-0.044588297605514526,-0.025783095508813858,-0.09935817122459412,0.062230516225099564,0.06122113764286041,-0.019803611561655998,0.06359098851680756,0.08360305428504944,0.10120139271020889,-0.08680674433708191,-0.04792364314198494,0.012836690060794353,-0.06468813866376877,-0.08948379755020142,-0.00902956910431385,-0.17264799773693085,0.009084426797926426,-0.026200013235211372,0.009852433577179909,-0.02606835402548313,0.08351528644561768,-0.0015181854832917452,0.06165999919176102,-0.03504306450486183,0.019748752936720848,-0.04077020660042763,-0.047440893948078156,-0.04590488225221634,-0.017225300893187523,-0.03984859585762024,0.09795381873846054,-0.016599925234913826,-0.05077623948454857,-0.04487355798482895,-0.029623130336403847,-0.09058094769716263,0.027209393680095673,0.020637447014451027,-0.05981678143143654,0.07285095751285553,-0.012353942729532719,-0.02896483801305294,-0.12604093551635742,-0.060343414545059204,0.008782709948718548,0.0731581598520279,0.014306874945759773,-0.012321027927100658,0.003225629683583975,0.04382029175758362,-0.054506558924913406,-0.04298645257949829,0.011119645088911057,-0.013692469336092472,-0.06780405342578888,0.027604369446635246,0.11024193465709686,-0.06323989480733871,-0.04594876617193222,-0.037325143814086914,0.05415547266602516,-0.013747327029705048,0.07969719171524048,-0.11858029663562775,0.004797301255166531,-0.012759889476001263,0.006895606406033039,-0.07465028762817383,-0.04066048935055733,0.1428932100534439,0.037390973418951035,-0.012748917564749718,-0.07846838235855103,0.05415547266602516,-0.0560864619910717,-0.045422133058309555,0.04989851638674736,0.07842449843883514,0.0030226565431803465,0.031356632709503174,-0.04254759103059769,-0.13051731884479523,-0.01195896789431572,0.037654291838407516,-0.02290855348110199,-0.013494981452822685,-0.15605904161930084,-0.018443141132593155,-0.0013947556726634502,0.05305831879377365,0.06736519187688828,-0.09172198921442032,-0.05419935658574104,0.004629985429346561,0.09751495718955994,-0.010527183301746845,-0.08500741422176361,-0.06253772228956223,0.029228154569864273,9.778375970199704E-4,-0.057359158992767334,-0.0935652032494545,2.768597041722387E-4,-0.01802622340619564,0.028262659907341003,0.07342147827148438,-0.023676561191678047,-0.09769050031900406,-0.07697625458240509,0.05665697902441025,-0.15061716735363007,0.012310056015849113,-0.004180152900516987,0.087508924305439,-0.02492731623351574,-0.04120906442403793,-0.09865599870681763,0.055472053587436676,-0.03798343613743782,0.013308465480804443,-0.035591643303632736,0.028196832165122032,0.0260244682431221,-1.6988728020805866E-4,-0.02999616228044033,-0.023435188457369804,0.02786768600344658,0.06337155401706696,0.009775632992386818,0.04219650477170944,-0.057315271347761154,0.01100444421172142,-0.07895112782716751,-0.020341215655207634,0.013703440316021442,-0.0821109265089035,0.008376763202250004,-0.01687421277165413,-0.0050935326144099236,-0.025475893169641495,0.013286522589623928,0.05169785022735596,0.04568545147776604,0.08329585194587708,0.03730320185422897,0.06069450452923775,0.020670361816883087,0.04309616982936859,0.026353614404797554,-0.061352793127298355,-0.07236821204423904,-0.012847661040723324,-0.006835263222455978,-0.034428659826517105,0.009084426797926426,-0.011827308684587479,0.034560319036245346,-0.03793954849243164,0.05929014831781387,0.026419444009661674,0.03372648358345032,-0.021229909732937813,-0.015711231157183647,0.017587361857295036,-0.03291459009051323,0.05371661111712456,-0.02712162211537361,0.25787484645843506,-0.04318394139409065,-0.002493280218914151,-0.00854133628308773,-0.07478194683790207,0.024773715063929558,-0.009320314973592758,0.032475728541612625,0.05367272347211838,-0.031488291919231415,0.05275111645460129,0.11199737340211868,-0.05582314357161522,0.00895276851952076,-0.016259808093309402,0.16071097552776337,-0.04412749409675598,-0.04083603248000145,-0.04465412721037865,-0.09856822341680527,-0.08979099988937378,0.02593669667840004,0.11910692602396011,-0.027253279462456703,0.05915848910808563,-0.11910692602396011,0.03693016991019249,-0.07144660502672195,-0.04480772837996483,-0.04586099460721016,-0.04274507984519005,-0.019430579617619514,-0.00844807829707861,0.027604369446635246,-0.022579409182071686,0.019397664815187454,0.035503871738910675,0.07899501174688339,-0.06657524406909943,0.02505897358059883,-0.023786276578903198,0.0518295057117939,0.03671073913574219,0.05678863823413849,0.1004992127418518,0.008546821773052216,0.03872950002551079,0.0085248788818717,0.08641176670789719,-0.006901092361658812,-0.13771463930606842,-0.06767239421606064,-0.07789786159992218,0.06122113764286041,-0.02087882161140442,-0.031246917322278023,0.022623294964432716,-0.006160513963550329,0.09268748760223389,0.08465632051229477,-0.1036590114235878,-0.09900708496570587,0.008299962617456913,0.06367875635623932,-0.004986560437828302,-0.0022011632099747658,0.02088979259133339,-0.016139119863510132,-0.07934610545635223,0.029754789546132088,-0.04880136623978615,0.05595480278134346,-0.01239782851189375,0.02087882161140442]