You need to enable JavaScript to run this app.
文档中心
大数据研发治理套件

大数据研发治理套件

复制全文
下载 pdf
EMR Serverless Spark 集群
EMR Serverless Spark SQL
复制全文
下载 pdf
EMR Serverless Spark SQL

DataLeap 支持对接火山引擎 E - MapReduce(EMR)中的 Serverless Spark 实例,可在 DataLeap 数据开发中编写 Spark SQL 进行作业开发,实现周期调度的定制化数据加工与查询分析。下面将向您介绍 DataLeap 中 EMR Serverless Spark SQL 任务配置的详细说明。

1 背景信息

在大数据处理领域,企业对高效、便捷且兼容开源的计算工具需求日益增长。EMR Serverless Spark 全托管形态的数据产品应运而生。具备开箱即用的特性,无需额外集群管理,且能提供完全兼容开源的 Spark 引擎能力。而 EMR Serverless Spark SQL 任务可用于加工处理 LAS Catalog 元数据库表中的数据,支持基于 Spark SQL 进行 SQL 作业开发,并完成 Spark SQL 的解析与任务提交,其语法 100% 兼容开源 Spark 3.5.1 版本,详细语法可参考 Spark 3.5.1 版本

2 使用限制

  • 需开通 DataLeap 服务版本中大数据分析、DataOps敏捷研发分布式数据自治的服务,项目方可继续绑定 EMR Serverless Spark 实例。详见版本服务说明
  • SQL 查询结果因结果页界面预览数据上限为 1000,以及项目数据安全设置均存在限制,查询结果显示数据可能小于实际数据量。建议按如下处理方式:
    1. 前往项目控制台,调整项目数据安全设置上限,上限 1 万行。
    2. 项目控制台 > 配置信息 > 数据安全设置 > 查询结果勾选允许下载,您便可在查询结果区域单击下载按钮,下载完整数据至本地查看。
      操作详见:新建项目
  • 本任务类型暂不支持调试执行成功或失败后发送消息通知。
  • 与 LAS Catalog 引擎侧保持一致,EMR Serverless Spark SQL 语句暂不支持通过 Alter 语句修改表字段名称。
  • 当项目中 EMR Serverless Spark 引擎已启用多环境隔离模式时,由于当前多环境暂不支持 Catalog 映射,所以在编辑 SQL 脚本时,需注意检查开发环境和生产环境是否存在名称相同的 Catalog,避免因 Catalog 实际配置不同导致任务执行失败。

3 使用前提

  1. 已开通 EMR Serverless Spark 队列资源实例。详见队列管理
  2. 已在 DataLeap 项目控制台中,绑定相应的 EMR Serverless Spark 服务实例。详见创建项目
  3. EMR Serverless Spark SQL 任务支持通过项目模板方式,快速进行任务配置,您可提前进行项目模板创建,以便后续任务创建时,可直接复用。详见模板管理
  4. 子用户访问 EMR Serverless Spark 队列资源时,需确保拥有 EMRServerlessFullAccessEMRServerlessReadOnlyAccess 权限策略,子用户可请主账号在访问控制界面进行权限策略添加,或者也可通过自定义策略方式进行配置相应权限。详见自定义策略

4 新建任务

  1. 登录 DataLeap租户控制台
  2. 在具体项目中进入数据开发界面,并单击新建任务按钮进行任务新建。
  3. 依次选择数据开发 > EMR Serverless Spark > EMR Serverless Spark SQL 任务类型。
  4. 填写任务基本信息,单击确定按钮,完成任务创建。

注意

  1. 在项目控制台管理界面中,如果新增或修改了引擎,那么在数据开发任务新建窗口中,需刷新整个 DataLeap 数据开发界面,才能看到新增或修改后的引擎任务类型。
  2. 任务名称信息仅允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且需要在127个字符以内。

Image

5 任务配置说明

5.1 编辑 SQL 代码

任务创建成功后,进入代码编辑器界面,SQL 语句示例代码如下。

说明

  • 当项目中 EMR Serverless Spark 引擎已启用多环境隔离模式时,由于当前多环境暂不支持 Catalog 映射,所以在编辑 SQL 脚本时,需注意检查开发环境和生产环境是否存在名称相同的 Catalog,避免因 Catalog 实际配置不同导致任务执行失败。
  • 若创建数据库时不指定 TOS 桶路径,则默认创建在 LAS Catalog 控制台中配置的指定 Hive 库存储位置。详见数据目录管理
  • SQL 语句中支持时间参数、自定义参数能力。时间参数详见平台时间变量与常量说明,上下文传参操作详见输入输出参数设置
  • 与 LAS Catalog 引擎侧保持一致,EMR Serverless Spark SQL 语句暂不支持通过 Alter 语句修改表字段名称。
  • 在以下示例语句中,若要访问自定义的 Catalog,可通过 set spark.hadoop.hive.metastore.catalog.default=catalog_name 参数指定,其中 catalog_name 需替换为实际 Catalog 名称;或者,在 DML&DQL 语句中,您也可以通过三段式访问多个 Catalog,如 Catalog_name.db_name.table_name。更多语句示例详见 Spark 访问 Hive\Iceberg\Paimon 表使用说明
  • Spark 访问 Hive 表类型:

    --创建数据库,指定自定义 TOS 桶路径进行存储,您需确保该 TOS 桶存在,并且当前用户有该桶路径的读写权限。
    create database db_demo location 'tos://您的tos bucket name/warehouse/';
    
    --默认在 Hive 数据目录下创建 Hive 库表,若要在其他数据目录下创建时,您需指定具体的数据目录进行创建,如 Catalog_name.db_name.table_name:
    CREATE  TABLE db_demo.table_01 (`id` INT, `name` STRING, `age` INT) PARTITIONED BY(date STRING);
    
    --插入数据
    INSERT INTO TABLE db_demo.table_01 PARTITION (date = '20240403') VALUES(1, 'testyw', 26),
    (2, '章三', 26),
    (3, '李四', 23),
    (4, '王五', 24),
    (5, '刘六', 23),
    (6, '方园', 88);
    
    --查数
    SELECT  * FROM    db_demo.table_01;
    
  • Spark 访问 Iceberg 表类型:

    -- 默认参数(必写)
    set spark.sql.catalog.iceberg=org.apache.iceberg.spark.SparkCatalog;
    set spark.sql.catalog.iceberg.type=hive;
    set spark.sql.storeAssignmentPolicy=ansi;
    use iceberg;
    
    --默认在 Hive 数据目录下创建 Iceberg 库表,若要在其他数据目录下创建时,您需指定具体的数据目录进行创建,如 Catalog_name.db_name.table_name:
    create database if not exists test_iceberg_db;
    create table if not EXISTS test_iceberg_db.test_tb(id int, name string);
    
    --写入并查询 Iceberg 数据:
    insert into table test_iceberg_db.test_tb values(1, 'hehe'),(2, 'haha');
    select * from test_iceberg_db.test_tb;
    
    
  • Spark 访问 Paimon 表类型:

    -- 默认参数(必写)
    set spark.sql.catalog.spark_paimon_catalog=org.apache.paimon.spark.SparkCatalog;
    set spark.sql.catalog.spark_paimon_catalog.metastore=hive;
    set spark.sql.storeAssignmentPolicy=ansi;
    -- 自定义 warehouse 路径,如果不指定时,默认使用当前首个 Hive 目录对应的 TOS 存储位置。
    set spark.sql.catalog.spark_paimon_catalog.warehouse=tos://您的tos bucket name/warehouse;
    
    use spark_paimon_catalog;--与上方设置的 SET 默认参数保持一致
    
    --默认在 Hive 数据目录下创建 Paimon 库表,若要在其他数据目录下创建时,您需指定具体的数据目录进行创建,如 Catalog_name.db_name.table_name:
    create database if not exists paimon_catalog.test_paimon_db;
    --创建非分区表
    create table if not EXISTS paimon_catalog.test_paimon_db.test_tb(id int, name string);
    --创建分区表
    create table if not EXISTS paimon_catalog.test_paimon_db.test_partition_tb(id int,ser_id int,name string) PARTITIONED BY (dt STRING COMMENT '日期分区') TBLPROPERTIES ('metastore.partitioned-table'='true'); --分区表必须带 TBLPROPERTIES 这个属性;
    
    --写入并查询 Paimon 数据:
    insert into table paimon_catalog.test_paimon_db.test_tb values(1, 'hehe'),(2, 'haha');
    INSERT INTO TABLE paimon_catalog.test_paimon_db.test_partition_tb partition (dt='${date}') VALUES(1, 23, 'hehe'),(2, 24, 'haha'),(3, 24, 'nana');
    
    --查询表数据
    select * from paimon_catalog.test_paimon_db.test_tb;
    select * from paimon_catalog.test_paimon_db.test_partition_tb;
    
  • 引用 EMR Serverless Spark 函数:

    说明

    在函数库中注册 EMR Serverless Spark 函数后,您可采用 “数据目录.数据库.函数名称”的格式来进行调用。当您输入 SQL 语句时,若未指定函数所在的数据目录信息,则平台将默认使用目录为 hive 的数据目录信息。

    --已在数据开发 > 函数库中,注册 EMR Serverless Spark 函数,函数名称为 test1。函数注册操作详见 
    select hive.hqw_testdb.test1("dasd");
    

5.2 导航栏功能区解析

功能名称

描述

格式化

依据在个性化设置中的SQL格式化风格的设置,格式化书写的代码,使其语法结构看起来简洁明了。

解析

解析检查书写的 SQL 代码的语法和语义正确性,运行前检查语法错误信息,防止运行出错。

注意

如果任务在调度设置 > 输入参数中使用项目参数类型,且参数设置勾选了加密选项,当非项目管理员操作任务解析时,由于解析不到加密参数会提示异常。此时若确保 SQL 符合执行逻辑,则您可跳过该解析异常提示。

执行引擎

默认支持选择 Spark 引擎。

6 调度设置

SQL 任务配置完成后,在右侧导航栏中,单击调度配置按钮,进入调度配置窗口,您可以在此设置任务基本信息、调度属性、依赖等信息,详细参数设置详见:调度设置

  • 调度基本信息 > 计算队列选择时,您可下拉选择项目控制台中已绑定的 Spark 计算队列,SQL 任务支持选择公共队列SQL 专用资源通用资源队列,来执行 EMR Serverless Spark SQL 任务。
    更多计算队列操作详见队列管理
    Image
  • 调度基本信息 > 是否使用项目模板选择时,您可按需选择当前任务,是否使用项目控制台已创建的模板管理。​在模版管理中,您可新建通用的任务执行队列、优先级、Set 参数设置等模板内容,来提升日常任务配置效率。详见模板管理

    注意

    选择使用项目模板的任务,模板中配置的内容,实际在任务中使用时区分如下:

    • 模板中配置的计算资源队列、优先级等内容,将覆盖任务原有的配置,且这些配置在任务中不可进行修改。若需要修改模板参数,您需前往项目控制台 > 模板管理进行修改,该操作会对所有使用该模板的任务生效,需谨慎操作。
    • 模版中配置的参数设置,如 SQL 任务的代码参数,将会结合任务中原有的 SQL 代码参数,进行合并使用。
    Image

6.1 任务产出数据登记

任务产出数据登记,用于记录任务、数据血缘信息,并不会对代码逻辑造成影响。您可在调度设置 > 任务产出数据登记一栏中,设置产出登记相关信息。
对于系统无法通过解析获取产出信息的其他任务,EMR Serverless Spark SQL 任务可自动或手动方式登记其产出信息。如果任务含有 LAS Catalog 库表数据的产出,则强烈建议填写,以便后续维护任务数据血缘关系。

  • 自动登记:
    任务产出数据使用“自动登记”模式,则任务每次上线时,系统将根据代码解析结果自动进行更新。您可单击查看“线上版本”的产出数据、查看“草稿版本”的产出数据按钮,查看当前任务不同版本下的产出数据自动登记结果。

    注意

    选择自动登记时,若 SQL 代码查询的字段名中包含 SQL 关键字,则需对其进行转义操作,即添加转义符号,如将 group 转义为 `group`、order 转义为 `order` 等。若不进行转义,将会影响后续数据地图中的数据血缘图谱、表生产信息等内容展现,或者您也可通过下方的手动登记方式,进行手动登记任务产出数据。

  • 手动登记:
    您手动填写的内容即为任务产出,支持填写多个。其他任务依赖时,您可在其调度设置界面,通过依赖推荐手动添加的方式,依据此处 EMR Serverless Spark SQL 任务产出的库表名信息来搜索添加依赖。 具体登记内容包括以下数据类型:

    说明

    若刚通过 SQL 方式创建的库表,手动登记选择不到库表时,您可先前往数据地图 > 元数据采集界面,手动执行元数据采集后,便可继续进行手动登记选择库表操作。手动执行采集操作详见元数据采集

    • EMR Serverless Spark:该任务逻辑会将数据写入到 LAS Catalog 表,需填写 LAS Catalog 的数据目录、库名、表名、分区名,分区内容可以使用变量,如 ${date}、${hour} 形式。
    • 其他:该任务逻辑不写数据到 LAS Catalog 表。

7 调试运行

代码逻辑和参数配置完成,单击保存调试按钮,便可开始运行任务。同时您也可在下方查看调试记录:

注意

  • 调试操作,直接使用线上数据进行调试,需谨慎操作。
  • 数据开发界面调试日志数据,保留 15 天,您可在 15 天内查看相应的调试日志详情。
  • 本任务类型支持调试执行成功或失败后发送消息通知给调试发起人,您可根据业务情况,前往项目控制台 > 配置信息 > 消息通知设置中,选择是否开启任务调试运行成功失败通知。默认通知方式为邮箱,调试发起人需在火山引擎“访问控制 > IAM 用户详情”中,提前绑定相应的安全邮箱信息;
  • 在调试记录左侧,您可通过选择调试状态,筛选出不同调试状态下的历史运行记录。

    • 鼠标移动至调试记录上,可查看包括状态、业务日期、提交人等信息。
    • 双击调试记录,您还可编辑调试名称信息,并回车保存。
      Image
  • 单击调试记录,在调试记录右侧,可以查看运行记录的日志、结果等详细信息:

    • 概览:查看运行结果的概览情况,包括调试业务日期、执行时长和 TrackingURL 执行详情链接等信息。
    • 日志:查看任务执行日志详情,可在此处查看引擎对应的 JobManager、Submit 和 Driver 日志详情信息。您也可前往 EMR Serverless Spark 控制台 > 队列详情 > 计算组 > 作业实例管理页签中,查看任务执行更多详细日志情况。

      说明

      • 您可通过 DataLeap 执行日志中的引擎实例名称或引擎实例ID 信息,在 EMR Serverless Spark 作业实例管理界面中,进行相关日志信息搜索。
        Image
      • 日志中展示的jobName完整拼接长度不得超过 100 字符,如果您设置的任务名称过长,超出的部分会被自动截断。为避免出现截断问题,建议您将任务名称长度控制在 40 个字符以内。
      • 注意:​如果您的任务名称中包含字母、数字、下划线、括号、中括号和中划线以外的字符(如中文、中文字符等),jobName 信息中将不会拼接该任务名称。
      Image
    • 结果:查看运行代码后,查询的结果信息。

    说明

    因结果页界面预览数据上限为 1000,以及项目数据安全设置均存在限制,查询结果显示数据可能小于实际数据量。建议按如下处理方式:

    • 前往项目控制台,调整项目数据安全设置上限,上限 1 万行。
    • 项目控制台 > 配置信息 > 数据安全设置 > 查询结果勾选允许下载,您便可在查询结果区域单击下载按钮,下载完整数据至本地查看。
      操作详见:新建项目

8 提交任务

调试任务成功后,单击上方操作栏中的保存提交上线按钮,在提交上线对话框中,选择回溯数据、监控设置、提交设置等参数,最后单击确认按钮,完成作业提交。 提交上线说明详见:数据开发概述---离线任务提交

注意

如果租户主账号或项目管理员在项目控制台>流水线管理中启用了流水线流程校验,则您需要确保提交的任务符合流水线扩展程序的校验规则,才能成功提交。详见3 流水线管理

后续任务运维操作详见:离线任务运维

最近更新时间:2026.01.16 11:57:19
这个页面对您有帮助吗?
有用
有用
无用
无用