EMR Serverless Spark 对接外部模型服务实践教程

EMR Serverless Spark 提供统一的外部模型服务注册能力,支持对接百炼、PAI-EAS 及自建模型服务。无需编写代码,通过 SQL 即可实现批量情感分析、内容生成、智能标签提取与向量化嵌入,让 AI 推理无缝融入数据处理流程。

统一操作流程:四步集成法

为降低AI接入门槛,EMR Serverless Spark 提供标准化集成路径,支持百炼、PAI-EAS 及自建模型服务,通过“四步法”实现注册即用、SQL调用。

本文以阿里云PAI为例,演示Qwen3-0.6B模型在PAI-EAS的部署与EMR中的注册调用,完成AI推理的无缝集成。

步骤

目标

所属平台

部署服务

PAI-EAS中发布服务

阿里云PAI控制台

获取凭证

获取 EndpointToken

阿里云PAI控制台

注册服务

在 EMR Serverless Spark中注册外部模型

EMR Serverless Spark 控制台

调用模型

使用 SQL 执行ai_query()

EMR Serverless Spark 控制台

如果您已成功在PAI控制台部署服务,请直接跳转至获取凭证

部署服务

以部署公共模型中的Qwen3-0.6B为例。

说明

公共模型是指已预置部署模板的模型,可一键部署,无需准备模型文件。如选择自定义模型,需通过对象存储OSS等方式挂载模型文件。

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 推理服务页签,单击部署服务,然后在场景化模型部署区域,单击LLM大语言模型部署

  3. 部署LLM大语言模型页面,配置以下关键参数。

    • 模型配置:选择公共模型,在列表中搜索并选择Qwen3-0.6B

    • 推理引擎:推荐使用SGLang/vLLM(高度兼容OpenAI API标准)。本文以vLLM为例,更多说明,请参见选择合适的推理引擎

    • 部署模板:选择单机。系统将根据模板自动填充推荐的实例规格、镜像等参数。

  4. 单击部署,服务部署耗时约5分钟。当服务状态变为运行中,表示部署成功。

    说明

    若服务部署失败,请参考服务状态异常解决。

获取凭证

服务部署成功后,您需要获取其VPC调用地址Token,用于后续在 EMR Serverless Spark 中注册该服务。

  1. 推理服务页签,单击您的服务名称进入概览页面,在基本信息区域单击查看调用信息

  2. 调用信息面板,可获取VPC调用地址Tokenimage

注册服务

将 PAI-EAS 服务注册到 EMR Serverless Spark中,以便 Spark SQL 中的 ai_query() 函数能够识别并调用它。

  1. 进入模型服务页面。

    1. 登录E-MapReduce控制台

    2. 在左侧导航栏,选择EMR Serverless > Spark

    3. Spark页面,单击目标工作空间名称。

    4. EMR Serverless Spark页面,单击左侧导航栏中的AI 中心 > 模型服务

  2. 在模型服务页签,单击创建外部模型服务,并配置以下信息:

    字段

    值示例

    说明

    模型服务名称

    my_qwen_service

    该名称用于后续AI FunctionendpointName入参的值,工作空间中唯一,不支持后续修改。

    Endpoint

    http://12*******39.vpc.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/<ServiceName>/v1

    填写上一步中获取的VPC调用地址,并在其末尾手动添加/v1

    模型名称

    /mnt/data/Qwen/Qwen3-0___6B

    服务部署时模型挂载全路径。

    模型类型

    Chat

    根据部署的模型类型选择Chat还是Embedding

    API KEY

    nMzI**********************Zg==

    填写上一步中获取的Token信息。

    描述

    通义千问0.6B在线服务

    填写服务的简要描述,便于识别。

  3. 确认所有配置项无误后,单击创建完成模型服务注册。

调用模型

完成模型服务注册后,您即可在 EMR Serverless Spark 中使用内置的 ai_query() 函数,通过标准 SQL 语句调用大模型服务,实现无需编写代码的 AI 推理能力集成。

说明

Gateway类型任务(Livy、Kyuubi)当前暂不支持。

  1. 创建 Spark SQL 作业并启用 AI 功能

    1. 开发目录页签下,单击image(新建)图标。

    2. 在弹出的对话框中,输入名称,类型选择SparkSQL,然后单击确定

    3. 在右上角下拉列表中单击创建SQL会话,并配置以下信息:

      配置项

      设置说明

      引擎版本

      选择以下版本。

      • esr-4.x:esr-4.6.0及之后版本。

      • esr-3.x:esr-3.5.0及之后版本。

      • esr-2.x:esr-2.9.0及之后版本。

      高级配置

      在自定义配置中,添加spark.emr.serverless.ai.function.enable true Spark配置启用 AI 功能。

  2. 编写 SQL 调用模型

    在数据开发页面,使用 ai_query() 函数编写 SQL 语句来调用模型。

    -- 第二个参数 'my_qwen_service' 是注册模型服务时的模型服务名称
    select ai_query('请判断下面这个评论是正向还是负向?\n 这个东西相当不行', 'my_qwen_service');
  3. 查看推理结果

    执行成功后,返回结果如下所示。

    <think> 嗯,用户让我判断这个评论是正向还是负向。评论是“这个东西相当不行”。首先,我需要理解这句话的意思。用户说的是“这个东西”不好,所以应该属于负面评价。 接下来,我需要考虑常见的负面评价的特征。通常,负面评价会包含明显的负面词汇,比如“不行”、“不好”、“糟糕”、“糟糕的”等。这些都是典型的负面情感词汇。此外,用户用了“相当”这个词,可能是在强调程度,但主要还是在表达不满。 然后,我要考虑用户的潜在需求。用户可能是在对某个产品或服务不满意,需要判断这个评论是否有效传达了负面情绪。用户可能希望了解评论的方向,或者是否需要进一步处理。 还要注意用户可能的深层意图。用户可能是在寻找如何处理这类评论,或者是否应该进行改进。因此,回答时需要明确指出评论的负面性质,并解释原因,这样用户能清楚理解。 最后,确保回答简洁明了,直接指出评论是负向的,同时保持礼貌和专业。这样用户就能得到准确的信息,没有歧义。 </think> 这个评论是**负向**的。

相关文档

常见问题

Q: 如何关闭 ai_query() 函数中的“think”过程(如思维链/推理步骤)?
A: ai_query() 支持通过参数控制模型输出行为。若需关闭思维链(thinking)过程,仅返回最终结果,可在调用时传入如下配置{"chat_template_kwargs": {"enable_thinking": false}}

image

说明
  • enable_thinking参数仅适用于 Qwen 系列模型。对于其他模型,关闭思维链(thinking)的参数,需要根据具体模型的参数进行配置。

  • 支持通过temperaturetop_k等参数调节模型输出的随机性与多样性。具体支持的参数请参考所使用模型的官方文档。