
# 开发实时处理单任务MRS Flink SQL作业
对已新建的作业进行开发和配置。
开发单任务模式的实时处理Flink SQL作业，请您参考[开发SQL脚本]、[配置作业参数]、[保存作业并运行]和[模板]章节。
#### 前提条件
- 已[新建作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0434.html)。
- 当前用户已锁定该作业，否则需要通过"抢锁"锁定作业后才能继续开发作业。新建或导入作业后默认被当前用户锁定，详情参见[编辑锁定功能](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0913.html)。
 
 #### 开发SQL脚本
1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
   详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
   
2. 在DataArts Studio控制台首页，选择对应工作空间的"数据开发"模块，进入数据开发页面。
3. 在数据开发主界面的左侧导航栏，选择"数据开发 \> 作业开发"。
4. 在作业目录中，双击单任务模式作业名称，进入作业开发页面。
5. 在SQL编辑器右侧，单击"基本信息"，可以配置作业的基本信息等。单任务MRS Flink SQL作业的基本信息如[表1]所示。
    表1作业基本信息 
   | 参数           | 说明                                                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|
   | 责任人          | 自动匹配创建作业时配置的作业责任人，此处支持修改。仅管理员可修改。                                                                                                                                                                                                                                                                                                                                            |
   | 执行用户         | 当"作业调度身份是否可配置"设置为"是"，该参数可见。 执行作业的用户。如果输入了执行用户，则作业以执行用户身份执行；如果没有输入执行用户，则以提交作业启动的用户身份执行。 用户只能指定自己作为执行用户，管理员有修改执行用户的权限。                                                                                                   |
   | 作业委托         | 当"作业调度身份是否可配置"设置为"是"，该参数可见。 配置委托后，作业执行过程中，以委托的身份与其他服务交互。                                                                                                                                                                                                                                                       |
   | 作业优先级        | 自动匹配创建作业时配置的作业优先级，此处支持修改。                                                                                                                                                                                                                                                                                                                                                    |
   | 实例超时时间       | 配置作业实例的超时时间，设置为0或不配置时，该配置项不生效。如果您为作业设置了异常通知，当作业实例执行时间超过超时时间，将触发异常通知，发送消息给用户，作业不会中断，继续运行。                                                                                                                                                                                                                                                                                     |
   | 实例超时是否忽略等待时间 | 配置实例超时是否忽略等待时间。 如果勾选上，表示实例运行时等待时间不会被计入超时时间，可前往[默认项设置 \> 实例超时是否忽略等待时间](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_04501.html#dataartsstudio_01_04501__section14959925164217)修改此策略。 如果未选上，表示实例运行时等待时间会被计入超时时间。 |
   | 自定义字段        | 配置自定义字段的参数名称和参数值。                                                                                                                                                                                                                                                                                                                                                            |
   | 作业标签         | 配置作业的标签，用以分类管理作业。 单击"新增"，可给作业重新添加一个标签。也可选择[管理作业标签](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0532.html)中已配置的标签。                                                                                                                                                             |
   | 作业描述         | 作业的描述信息。                                                                                                                                                                                                                                                                                                                                                                     |
      
   表2实时处理单任务MRS Flink SQL作业属性信息 
   | 属性          | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|
   | **Flink SQL属性**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ||
   | Flink作业名称   | 输入Flink作业名称。 系统支持Flink作业名称按照**工作空间-作业名称**格式自动填入。 说明： 只能包含英文字母、数字、中划线和下划线。最大只能输入64个字符，不能包含中文字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | MRS集群名      | 选择MRS集群名称。 说明： 单任务Flink SQL目前支持的MRS集群版本是MRS 3.2.0-LTS.1及以上版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 运行程序参数      | 配置作业运行参数。当选择了MRS集群名后，该参数才显示。 该参数为本次执行的作业配置相关优化参数（例如线程、内存、CPU核数等），用于优化资源使用效率，提升作业的执行性能。 注意： 系统支持实时Flink SQL作业运行前能够查询历史checkpoint，并选择从指定checkpoint启动。要使Flink Checkpoint生效，需要配置两个运行参数： 图1配置运行程序参数 ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001954483973.png "点击放大") - 用来控制checkpoint间隔 **-yD：execution.checkpointing.interval=1000**   - 用来控制保留的checkpoint数量 **-yD：state.checkpoints.num-retained=1** **0** 查询checkpoint列表时，配置-s参数，鼠标单击参数值输入框，checkpoint列表参数值会自动弹出。    说明： 若集群为MRS 1.8.7版本或MRS 2.0.1之后版本，需要配置此参数。 单击"选择模板"，选择已创建好的脚本模板，系统支持引用多个模板。创建模板的详细操作请参见[配置模板](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1282.html)。 MRS Flink作业的运行程序参数，请参见《MapReduce用户指南》中的[运行Flink作业](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0527.html)。 |
   | Flink作业执行参数 | 配置Flink作业执行参数。 Flink程序执行的关键参数，该参数由用户程序内的函数指定。多个参数间使用空格隔开。 说明： 请勿输入敏感信息，例如ak、sk、password、authorization等信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | MRS资源队列     | 选择已创建好的MRS资源队列。 需要先在数据安全服务队列权限功能中，配置对应的队列后，才能在此处选择到已配置的队列。当有多处同时配置了资源队列时，此处配置的资源队列为最高优先级。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 重跑策略        | 从上一个检查点重跑：从最近5次运行记录中取最新的检查点进行重跑；重新启动：根据启动方式配置进行重跑。 - 从上一个检查点重跑 Flink实时作业失败时自动重试将会自动获取最新的checkpoint，并从该checkpoint进行续跑，若不存在最新checkpoint，作业将启动失败。   - 重新启动 按作业当前配置重新启动，不涉及位点或checkpoint选择。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 输入数据路径      | 设置输入数据路径，系统支持从HDFS或OBS的目录路径进行配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | 输出数据路径      | 设置输出数据路径，系统支持从HDFS或OBS的目录路径进行配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      
   表3高级参数 
   | 参数          | 是否必选 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   |:---|:---|:---|
   | 作业状态轮询时间（秒） | 是    | 设置轮询时间（30\~60秒、120秒、180秒、240秒、300秒），每隔x秒查询一次作业是否执行完成。 作业运行过程中，根据设置的作业状态轮询时间查询作业运行状态。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 最长等待时间      | 是    | 设置作业执行的超时时间，如果作业配置了重试，在超时时间内未执行完成，该作业将会再次重试。 说明： 如果作业一直处于启动中状态，没有成功开始运行，超时后作业会被置为失败。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 失败重试        | 是    | 作业执行失败后，是否重新执行作业。 - 是：重新执行作业，请配置以下参数。 - 超时重试  - 最大重试次数  - 重试间隔时间（秒）    - 否：默认值，不重新执行作业。 说明： 如果作业节点配置了重试，并且配置了超时时间，该节点执行超时后，系统支持再重试。 当节点运行超时导致的失败不会重试时，您可前往"默认项设置"修改此策略。 当"失败重试"配置为"是"才显示"超时重试"。    |
      
   
6. 在SQL编辑器中输入SQL语句，支持输入多条SQL语句。
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   - SQL语句之间以";"分隔。如果其他地方使用";"，请通过"\\"进行转义。例如：
     ```
     select 1;
     select * from a where b="dsfa\;";  --example 1\;example 2.
     ```
     
   
   - 脚本内容大小不能超过1MB。
   
   - 使用SQL语句获取的系统日期和通过数据库工具获取的系统日期是不一样，查询结果存到数据库是以YYYY-MM-DD格式，而页面显示查询结果是经过转换后的格式。
   
   - Flink SQL作业支持语法检查。在编辑器上方，单击"语法检查"，可以对SQL语句进行语法检查。SQL语句检查完成后，可以查看语法检查详细信息。
   
   - 脚本执行历史结果可以进行权限管控，可设置为"仅自己可见"或"所有用户可见"，默认配置项请参见[脚本执行历史展示](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_04501.html#dataartsstudio_01_04501__section7536359192017)。
   
   - 请勿输入敏感信息，例如ak、sk、password、authorization等信息。
    
   为了方便脚本开发，数据开发模块提供了如下能力：
   - 脚本编辑器支持使用如下快捷键，以提升脚本开发效率。
     - F8：运行
     
     - F9：停止
     
     - Ctrl + /：注释或解除注释光标所在行或代码块
     
     - Ctrl + Z：撤销
     
     - Ctrl + F：查找
     
     - Ctrl + Shift + R：替换
     
     - Ctrl + X：剪切
     
     - Ctrl + S：保存
     
     - Alt + 鼠标拖动：列模式编辑，修改一整块内容
     
     - Ctrl + 鼠标点选：多列模式编辑，多行缩进
     
     - Ctrl + →或Ctrl + ←：向右或向左按单词移动光标
     
     - Ctrl + Home或Ctrl + End：移至当前文件的最前或最后
     
     - Home或End：移至当前行最前或最后
     
     - Ctrl + Shift + L：鼠标双击相同的字符串后，为所有相同的字符串添加光标，实现批量修改
     
     - Ctrl + D：删除一行
     
     - Shift + Ctrl + U：解锁
     
     - Ctrl + Alt + K：同词选择
     
     - Ctrl + B：格式化
     
     - Ctrl + Shift + Z：重做
     
     - Ctrl + Enter：执行所选行/选中内容
     
     - Ctrl + Alt + F：标记
     
     - Ctrl + Shift + K：查找上一个
     
     - Ctrl + K：查找下一个
     
     - Ctrl + Backspace：删除左侧单词
     
     - Ctrl + Delete：删除右侧单词
     
     - Alt + Backspace：删除至行首
     
     - Alt + Delete：删除至行尾
     
     - Alt + Shift-Left：选择行首
     
     - Alt + Shift-Right：选择行尾
      
   
   - 支持脚本参数。 在SQL语句中直接写入脚本参数，然后在编辑器右侧的"参数"处选择"更新脚本参数"。也可以直接配置该作业脚本的参数与常量。
     脚本示例如下，其中str1是参数名称，只支持英文字母、数字、"-"、"_"、"\<"和"\>"，最大长度为16字符，且参数名称不允许重名。
     ```
     select ${str1} from data;
     ```
     
     
7. （可选）在编辑器上方，单击"格式化"，格式化SQL语句。
8. 在编辑器上方，单击"保存"按钮，保存该作业并进行提交。
 
 #### 配置作业参数
单击编辑器右侧的"参数"，展开配置页面，配置如[表4]所示的参数。
 表4作业参数配置 
| 功能      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|
| **变量**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ||
| 新增      | 单击"新增"，在文本框中填写作业参数的名称和参数值。 - 参数名称 名称只能包含字符：英文字母、数字、点号、中划线和下划线。   - 参数值 - 字符串类的参数直接填写字符串，例如：str1  - 数值类的参数直接填写数值或运算表达式。     参数配置完成后，在作业中的引用格式为：${参数名称}                                                                                                                                                                                                                                                                 |
| 编辑参数表达式 | 在参数值文本框后方，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001647863589.png)，编辑参数表达式，更多表达式请参见[表达式概述](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0494.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 修改      | 在参数名和参数值的文本框中直接修改。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 掩码显示    | 在参数值为密钥等情况下，从安全角度，请单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001598303148.png)将参数值掩码显示。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 删除      | 在参数值文本框后方，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001647742961.png)，删除作业参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **常量**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ||
| 新增      | 单击"新增"，在文本框中填写作业常量的名称和参数值。 - 参数名称 名称只能包含字符：英文字母、数字、点号、中划线和下划线。   - 参数值 - 字符串类的参数直接填写字符串，例如：str1  - 数值类的参数直接填写数值或运算表达式。     参数配置完成后，在作业中的引用格式为：${参数名称} |
| 编辑参数表达式 | 在参数值文本框后方，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001647465453.png)，编辑参数表达式，更多表达式请参见[表达式概述](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0494.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 修改      | 在参数名和参数值的文本框中直接修改，修改完成后，请保存。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 删除      | 在参数值文本框后方，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001597825520.png)，删除作业常量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **工作空间环境变量**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ||
| 查看工作空间已配置的变量和常量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ||
   
单击"作业参数预览"页签，展开预览页面，配置如[表5]所示的参数。
 表5作业参数预览 
| 功能     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|
| 当前时间   | 仅单次调度才显示。系统默认为当前时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 事件触发时间 | 仅事件驱动调度才显示。系统默认为事件触发时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 周期调度   | 仅周期调度才显示。系统默认为调度周期。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 具体时间   | 仅周期调度才显示。周期调度配置的具体运行时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 起始日期   | 仅周期调度才显示。周期调度的生效时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 后N个实例  | 作业运行调度的实例个数。 - 单次调度场景默认为1。  - 事件驱动调度场景默认为1。  - 周期调度场景 当实例数大于10时，系统最多展示10个日期实例，系统会自动提示"当前参数预览最多支持查看10个实例"。    |
   
![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
在作业参数预览中，如果作业参数配置存在语法异常情况系统会给出提示信息。
如果参数配置了依赖作业实际运行时产生的数据，参数预览功能中无法模拟此类数据，则该数据不展示。
 #### 保存作业并运行
作业配置完成后，单击"保存"，保存作业的配置信息，并提交该作业。
保存后，在右侧的版本里面，会自动生成一个保存版本，支持版本回滚。保存版本时，一分钟内多次保存只记录一次版本。对于中间数据比较重要时，可以通过"新增版本"按钮手动增加保存版本。
作业保存提交后，并执行以下操作。
1. 单击画布上方的"启动"，选择启动方式后，运行作业。运行完成后，查看执行结果时，双击任意一行的一个字段，可以查看该行的结果详情，支持复制字段名称。 
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   执行结果最多显示1000条数据；执行结果的大小不超过3MB，若超过3MB结果会被截断。
   MRS Flink SQL脚本执行结果支持一键清空筛选功能（仅支持执行结果以列表形式展示）。
   MRS Flink支持通过租户面连接的jobGateway方式手动触发savepoint。注意：MRS Flink作业触发savepoint，需要开发人员手动去触发savepoint，开发人员修改作业后从savepoint启动作业，从而避免数据丢失。（savepoint是指实时作业某一个时间点的快照，Flink实时作业停止时，系统会自动保存一个savepoint快照，修改作业后，继续从这个停止的时间点开始运行。）
   作业启动包含无状态启动和有状态启动。无状态启动是指不包含任何初始状态启动。有状态启动是指从最新状态或者指定状态启动。有状态启动包含如下两种方式：
   - 从最新状态启动
   
   - 从指定状态启动：选择checkpoint/savepoint进行启动。
     - 从状态集选择：支持从状态集选择checkpoint/savepoint
     
     - 从OBS选择：支持从OBS选择或者填写checkpoint/savepoint
     
     - 从HDFS选择：支持从HDFS选择或者填写checkpoint/savepoint
      
    
   
   
2. 运行完成后，前往"作业监控 \> 实时作业监控"，查看作业运行详细信息。 
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   当作业在数据开发没有查到最新checkpoint，但又希望从之前的checkpoint继续跑时，可以在历史运行记录中，查看日志，找到此前启动或者作业运行生成的checkpoint，指定checkpoint启动作业。
   
   
 
 #### 模板
在开发Flink SQL单任务实时处理作业时，系统支持引用公共脚本模板。创建模板的详细操作请参见[配置模板](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1282.html)，脚本模板的使用场景指导请参见[引用脚本模板和参数模板的使用介绍](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1582.html)。同时，系统提供了多个Flink SQL的公共模板，便于用户在开发常用的Flink SQL语句时进行参考。Flink SQL脚本还支持引用空间模板。
