You need to enable JavaScript to run this app.
导航
EMR SQL
最近更新时间:2024.11.01 16:27:19首次发布时间:2021.08.13 15:07:14

1 概述

使用EMR SQL 语句,从源表中获取待加工数据,加工完成后写入目标表。EMR 支持 Hive 和 Spark 两种执行引擎。
下面将向您介绍 EMR SQL 任务配置的详细说明。

2 使用前提

  1. 已创建 EMR Hadoop 集群实例。详见创建集群
  2. 若仅开通 DataLeap 版本中湖仓一体的服务,项目不支持绑定 EMR 引擎。详见DataLeap 公有云版本功能差异
  3. 已在 DataLeap 租户控制台中,绑定相应的 EMR Hadoop 集群实例。详见绑定 Hadoop 集群
  4. 在 DataLeap 项目控制台中,绑定 EMR Hadoop 集群实例。详见创建项目

3 任务配置说明

3.1 新建任务

任务配置步骤如下:

  1. 登录 DataLeap租户控制台
  2. 概览界面,显示加入的项目中,单击数据开发进入对应项目。
  3. 任务开发界面,左侧导航栏中,单击新建任务按钮,进入新建任务页面。
  4. 选择任务类型:
    1. 分类:数据开发
    2. 绑定引擎:EMR
    3. 关联实例:在下拉列表中选择项目绑定时的 Hadoop 引擎实例,项目支持绑定多个 EMR 引擎,您可在多个引擎实例中选取该任务需执行的引擎实例。多引擎绑定详见创建项目
    4. 选择任务:离线数据 EMR SQL
  5. 填写任务基本信息:
    1. 任务名称:输入任务的名称,只允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且需要在127个字符以内。
    2. 保存至: 选择任务存放的目标文件夹目录。
  6. 单击确认按钮,成功创建任务。
    Image

3.2 编辑任务

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

说明

EMR Hadoop 集群若开启安全模式,子用户执行 SQL 语句时,需确保有相应的 Hive 库表权限。开启安全模式操作详见绑定 Hadoop 集群,子用户申请库表权限详见申请权限

//方式1静态分区,场景:根据数据到来的频率,新数据的到来时间确定,分区的值是确定的。
insert overwrite table 目标库名.目标表名 partition (date = "${date}")
select
name,
age
from
源库名.源表名
where
`date` = '${DATE-1}'
//方式2动态分区,谨慎使用,根据已有数据进行动态分区,分区的值是非确定的。
insert overwrite table 目标库名.目标表名 partition (p_date,app)
select
user_id,
date as p_date,
app_name as app//分区字段
from
源库名.源表名
where
`date` = '${DATE-1}'

3.3 智能代码编辑器

智能代码编辑器具备以下能力:

功能

说明

Text Editor

具备 Editor 基础能力、列编辑、代码格式化、代码解析等,辅助提升开发效率。

智能联想及补全

开发过程中,支持智能联想库、表、字段、函数、SQL 关键词等。

实时语法检查

开发过程触发智能语法检查。

语法解析

完成SQL编写后,可以单击解析按钮,检查代码是否存在语法错误以及是否具备引用库表的读写权限。

语法高亮

在关键字、函数、参数、字段、字符串等信息中,高亮提醒,提高整体代码的可阅读性。

跳转定义

鼠标移动至表名,支持快捷键跳转到数据地图表详情页,Mac按住Command,Windows按住 Control 。

字段展开

编写 Select * 查询语句时,使用光标选中 * 号后,会立即有灯泡符号的提示,单击灯泡将自动列出引用表字段 。

代码列编辑

  • 通常需要在 DDL 语言中批量对数据类型,注释,列增加前缀、后缀进行编辑。
  • Mac 按住 ⇧ + ⌥ + Click ,Windows 按住 Shift + Alt + Click

局部代码调试分析

  • 支持多段 SQL 调试运行。
  • 选中某一个分段代码,即可对其运行、格式化、解析等操作。

编辑器右下角的全屏图标Image

单击图标,支持全屏代码开发。

3.4 导航栏功能区解析

注意

任务被模板使用后,格式化、表管理、执行引擎选择功能将不支持使用。

功能名称

描述

格式化

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

解析

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

任务模板

您可以选择是否通过任务模板方式,便捷快速的复用代码模板逻辑,在弹窗中选择 EMR SQL 任务模板,并选择相应的版本号,输入替换的参数即可完成复用。

注意

  • 使用任务模板时,界面编辑器不支持再次编辑,若当前任务模板代码,不符合您当前业务场景逻辑,您可通过修改或新建任务模板,形成新版本的任务模板,来实现不同业务场景的复用。
  • 修改模板时,需注意其他任务引用情况,操作说明详见:任务模板

表管理

若数据需要存入的表尚未创建,则编写完 SQL 语句后,单击表管理 > 快速建表 ,可基于解析代码快速填充建表页面。

执行引擎

目前支持 Spark、Hive。

注意

若 EMR Hadoop 集群,在集群绑定时,选择开启安全模式访问,并在 EMR 集群的 Ranger 服务中已开启 Hive Plugin 或 SparkSQL Plugin,则选择不同执行引擎运行任务前,您需先保障执行账号拥有数据库表的访问权限。详见申请权限

3.5 调度设置

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

3.5.1 任务产出数据登记

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

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

    注意

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

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

    • HDFS:该任务会写数据到 HDFS 目录,请填写 HDFS 路径名,路径名可以使用变量。
    • Hive:该任务会写数据到 Hive 表,请填写 Hive 库、表名、分区名,分区内容可以使用变量。
    • 其他:该任务不写数据到 Hive 表或 HDFS 目录。

3.6 查询控制台

3.6.1 调试任务

代码逻辑和参数配置完成后,您可以在界面进行调试操作。
编辑器上方,单击保存按钮后,再单击调试按钮,开始运行任务。

注意

  • 调试操作,直接使用线上数据进行调试,需谨慎操作。
  • 如果 DataLeap 控制台中创建了相关的建表规范管理,则 EMR SQL 语句中,包含建表逻辑,且创建的表在建表规范生效范围内时,您在对任务的解析运行提交时,会触发相应的建表规范检查。建表规范操作说明请参见“建表规范管理”。
  • 本任务类型支持调试执行成功或失败后发送消息通知,您可根据业务情况,前往项目控制台 > 配置信息 > 消息通知设置中,选择是否开启任务调试运行成功失败通知。
    • 默认通知方式为邮箱,您需在“账号管理”中,提前绑定相应的安全邮箱信息;
    • 您也可根据业务需要,自行配置飞书应用机器人,通过飞书的方式发送消息通知,飞书消息通知前置操作详见1.1 飞书应用机器人创建

3.6.2 调试记录

调试任务开始运行后,可在下方查看调试记录:

  • 在调试记录左侧,您可通过选择调试状态,筛选出不同调试状态下的历史运行记录。
    • 鼠标移动至调试记录上,可查看包括状态、业务日期、提交人等信息。
    • 双击调试记录,您还可编辑调试名称信息,并回车保存。
      Image
  • 单击调试记录,在调试记录右侧,可以查看运行记录的概览、日志、结果等详细信息:
    • 概览:查看调试业务时间、开始时间、结束时间、运行时长、提交人和运行代码等信息。
    • 日志:查看运行代码日志详情,单击界面中下载日志按钮,支持将完整日志下载到本地。
    • 结果:查看运行代码后,查询的结果信息。

3.7.3 查询结果Excel展示

一段代码执行完成后,会展现查询结果,在整个结果页中用了类似 Excel 功能,无需跑多段代码就可对数据进行操作和分析,以增强代码逻辑的改进。
功能描述如下:

功能

说明

单列字段搜索

对单个字段进行模糊和精确查找。

升降序排列

数据排序功能。

隐藏列

只显示需要操作的列数据。

复制该行

鼠标移动到想要复制的具体某条数据,单击复制该行,即完成复制整行操作。

复制该列

鼠标移动到想要复制的具体某条数据,单击复制该列,即完成复制整列操作。

复制选中

鼠标圈选需要复制的数据,单击复制选中,即完成复制选中的数据。

全局搜索

在整个工作表中查找数据。

下载

  • 项目控制台 > 配置信息 > 数据安全设置 > 查询结果勾选允许下载时,才支持下载结果页数据。
  • 因结果页界面预览数据上限为 1000,以及项目数据安全设置均存在限制,查询结果显示数据可能小于实际数据量。建议按如下处理方式:
    1. 前往项目控制台,调整项目数据安全设置上限,上限 1 万行。
    2. 查询结果区域单击下载按钮,下载完整数据至本地查看。

操作详见:新建项目

4 提交任务

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