更新时间:2024-11-04 GMT+08:00

开发批处理单任务SQL作业

对已新建的作业进行开发和配置。

开发单任务模式的批处理作业,请您参考开发SQL脚本配置作业参数质量监控数据表调测并保存作业下载或转储脚本执行结果章节。

前提条件

  • 已创建作业,详情请参见新建作业
  • 当前用户已锁定该作业,否则需要通过“抢锁”锁定作业后才能继续开发作业。新建或导入作业后默认被当前用户锁定,详情参见编辑锁定功能

开发SQL脚本

  1. 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。
  2. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
  3. 在数据开发主界面的左侧导航栏,选择数据开发 > 作业开发
  4. 在作业目录中,双击单任务模式作业名称,进入作业开发页面。
  5. 在SQL编辑器右侧,单击“基本信息”,可以配置作业的基本信息、属性和高级信息等。单任务SQL作业的基本信息如表1所示,属性如表2所示,高级信息如表3所示。
    表1 作业基本信息

    参数

    说明

    责任人

    自动匹配创建作业时配置的作业责任人,此处支持修改。

    作业委托

    当“作业调度身份是否可配置”设置为“是”,该参数可见。

    配置委托后,作业执行过程中,以委托的身份与其他服务交互。

    作业优先级

    自动匹配创建作业时配置的作业优先级,此处支持修改。

    实例超时时间

    配置作业实例的超时时间,设置为0或不配置时,该配置项不生效。如果您为作业设置了异常通知,当作业实例执行时间超过超时时间,将触发异常通知,发送消息给用户,作业不会中断,继续运行。

    实例超时是否忽略等待时间

    配置实例超时是否忽略等待时间。

    如果勾选上,表示实例运行时等待时间不会被计入超时时间,可前往默认项设置修改此策略。

    如果未选上,表示实例运行时等待时间会被计入超时时间。

    自定义字段

    配置自定义字段的参数名称和参数值。

    作业标签

    配置作业的标签,用以分类管理作业。

    单击“新增”,可给作业重新添加一个标签。也可选择管理作业标签中已配置的标签。

    表2 批处理单任务SQL作业属性信息

    属性

    说明

    DLI SQL属性

    DLI数据目录

    选择DLI的数据目录。

    • 在DLI默认的数据目录dli。
    • 在DLI所绑定的LakeFormation已创建元数据catalog。

    数据库名称

    选择数据库。

    DLI数据目录如果选择DLI默认的数据目录dli,表示为DLI的数据库和数据表。

    DLI数据目录如果选择DLI所绑定的LakeFormation已创建元数据catalog,表示为LakeFormation的数据库和数据表。

    队列名称

    默认选择SQL脚本中设置的DLI队列,支持修改。

    如需新建资源队列,请参考以下方法:
    • 单击,进入DLI“队列管理”页面新建资源队列。
    • 前往DLI管理控制台进行新建。

    是否记录脏数据

    单击选择节点是否记录脏数据。

    • 是:记录脏数据
    • 否:不记录脏数据

    DLI环境变量

    • 环境变量配置项需要以"hoodie."或"dli.sql."或"dli.ext."或"dli.jobs."或"spark.sql."或"spark.scheduler.pool"开头。
    • 环境变量为dli.sql.autoBroadcastJoinThreshold时,值只能为整数,环境变量为dli.sql.shuffle.partitions时,值只能为正整数。
    • 环境变量的key为dli.sql.shuffle.partitions或dli.sql.autoBroadcastJoinThreshold时,不能包含><符号。
    • 如果作业和脚本中同时配置了同名的参数,作业中配置的值会覆盖脚本中的值。
      说明:

      在非调度场景的DLI SQL脚本运行和DLI SQL单任务作业测试运行时,系统会默认开启以下四个配置参数:

      • spark.sql.adaptive.enabled(启用AQE,使Spark能够根据正在处理的数据的特征动态优化查询的执行计划,可以通过减少需要处理的数据量来提高性能。)
      • spark.sql.adaptive.join.enabled(启用AQE用于连接操作,可以通过根据正在处理的数据动态选择最佳连接算法来提高性能。)
      • spark.sql.adaptive.skewedJoin.enabled(启用AQE用于倾斜的连接操作,可以通过自动检测倾斜的数据并相应地优化连接算法来提高性能)
      • spark.sql.mergeSmallFiles.enabled(启用合并小文件功能,可以通过将小文件合并成较大的文件来提高性能,可以减少处理许多小文件的时间,并通过减少需要从远程存储中读取的文件数量来提高数据本地性。)

      如果不使用的话,可以手动配置相关参数进行关闭,参数值设置为false。

    DWS SQL属性

    数据连接

    选择数据连接。

    数据库

    选择数据库。

    脏数据表

    SQL脚本中定义的脏数据表名称。

    脏数据属性用户不能编辑,自动从SQL脚本内容中关联推荐。

    匹配规则

    设置java正则表达式,匹配DWS SQL结果内容,比如表达式为(?<=\()(-*\d+?)(?=,), 匹配对应SQL结果为 (1,"error message") ,匹配到的结果为 "1"。

    失败匹配值

    当匹配成功的内容等于设置值时,该节点执行失败。

    RDS SQL属性

    数据连接

    选择数据连接。

    数据库

    选择数据库。

    Spark SQL属性

    MRS作业名称

    MRS的作业名称。系统同时支持按照作业名称自动填入。

    未设置MRS作业名称且选择直连模式时,节点名称只能由英文字母、数字、中划线和下划线组成。最大只能输入64个字符,不能包含中文字符。

    说明:

    如果选择MRS API连接方式的数据连接,不支持设置作业名称。

    数据连接

    选择数据连接。

    MRS资源队列

    选择已创建好的MRS资源队列。

    说明:

    您需要先在数据安全服务队列权限功能中,配置对应的队列后,才能在此处选择到已配置的队列。当有多处同时配置了资源队列时,此处配置的资源队列为最高优先级。

    数据库

    选择数据库。MRS API连接方式下不支持选择数据库。

    运行程序参数

    配置运行参数。

    举例如下:

    参数配置为--queue,参数值配置为default_cr,该示例表示配置了MRS集群的指定队列。同时在MRS集群的作业管理下,在操作的“更多 > 查看详情”里面可以查看该作业的详细信息。

    说明:

    为本次执行的作业配置相关优化参数(例如线程、内存、CPU核数等),用于优化资源使用效率,提升作业的执行性能。Spark代理连接不支持该配置。

    在MRS API连接模式下,单算子作业Spark SQL支持程序运行参数。

    Hive SQL属性

    MRS作业名称

    MRS的作业名称。系统同时支持按照作业名称自动填入。

    未设置MRS作业名称且选择直连模式时,节点名称只能由英文字母、数字、中划线和下划线组成。最大只能输入64个字符,不能包含中文字符。

    数据连接

    选择数据连接。

    数据库

    选择数据库。

    MRS资源队列

    选择已创建好的MRS资源队列。

    运行程序参数

    配置运行参数。

    举例如下:

    参数配置为--hiveconf,参数值配置为mapreduce.job.queuename=default_cr,该示例表示配置了MRS集群的指定队列。同时在MRS集群的作业管理下,在操作的“更多 > 查看详情”里面可以查看该作业的详细信息。

    说明:

    为本次执行的作业配置相关优化参数(例如线程、内存、CPU核数等),用于优化资源使用效率,提升作业的执行性能。Hive代理连接不支持该配置。

    在MRS API连接模式下,单算子作业Hive SQL支持程序运行参数。

    Doris SQL属性

    数据连接

    选择数据连接。

    数据库

    选择数据库。

    表3 高级参数

    参数

    是否必选

    说明

    节点状态轮询时间(秒)

    设置轮询时间(1~60秒),每隔x秒查询一次节点是否执行完成。

    节点运行过程中,根据设置的节点状态轮询时间查询节点是否执行完成。

    节点执行的最长时间

    设置节点执行的超时时间,如果节点配置了重试,在超时时间内未执行完成,该节点将会再次重试。

    失败重试

    节点执行失败后,是否重新执行节点

    • 是:重新执行节点,请配置以下参数。
      • 超时重试
      • 最大重试次数
      • 重试间隔时间(秒)
    • 否:默认值,不重新执行节点
      说明:

      如果作业节点配置了重试,并且配置了超时时间,该节点执行超时后,系统支持再重试。

      当节点运行超时导致的失败不会重试时,您可前往“默认项设置”修改此策略。

      当“失败重试”配置为“是”才显示“超时重试”。

    当前节点失败后,后续节点处理策略

    当前节点执行失败后,后续节点的处理策略:

    • 终止当前作业执行计划:终止当前作业运行,当前作业实例状态显示为“失败”。如果是周期调度作业,后续周期调度会正常运行。
    • 忽略失败,作业结果设为成功:忽略当前节点失败,当前作业实例状态显示为“运行成功”。如果是周期调度作业,后续周期调度会正常运行。
  6. 在SQL编辑器中输入SQL语句,支持输入多条SQL语句。
    • SQL语句之间以“;”分隔。如果其它地方使用“;”,请通过“\”进行转义。例如:
      select 1;
      select * from a where b="dsfa\;";  --example 1\;example 2.
    • RDS SQL当前不支持begin ... commit事务语法,若有需要,请使用start transaction ... commit事务语法。
    • 脚本内容大小不能超过16MB。
    • 使用SQL语句获取的系统日期和通过数据库工具获取的系统日期是不一样,查询结果存到数据库是以YYYY-MM-DD格式,而页面显示查询结果是经过转换后的格式。
    • 当前用户提交Spark SQL脚本到MRS时,默认提交至其绑定的租户队列(绑定队列即用户绑定的租户类型角色所对应的队列)中运行。当绑定多个队列时,系统会优先根据内部排序选择队列进行提交;如果需要给该用户使用固定一个队列进行提交, 可以登录FusionInsight Manager界面,在"租户资源 > 动态资源计划 > 全局用户策略"中给该用户配置默认队列,详细操作请参见管理全局用户策略
    为了方便脚本开发,数据开发模块提供了如下能力:
    • 脚本编辑器支持使用如下快捷键,以提升脚本开发效率。
      • F8:运行
      • F9:停止
      • Ctrl + /:注释或解除注释光标所在行或代码块
      • Ctrl + Z:撤销
      • Ctrl + F:查找
      • Ctrl + Shift + R:替换
      • Ctrl + X:剪切
      • Ctrl + S:保存
      • Alt + 鼠标拖动:列模式编辑,修改一整块内容
      • Ctrl + 鼠标点选:多列模式编辑,多行缩进
      • Shift + Ctrl + K:删除当前行
      • 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;
    • 支持可视化读取数据表生成SQL语句功能。

      单击编辑器右侧的“数据表”,显示当前数据库或schema下的所有表,可以根据您的需要勾选数据表和对应的列名,在右下角单击“生成SQL语句”,生成的SQL语句需要您手动格式化。

  7. (可选)在编辑器上方,单击“格式化”,格式化SQL语句。
  8. 在编辑器上方,单击“运行”。如需单独执行某部分SQL语句,请选中SQL语句再运行。SQL语句运行完成后,在编辑器下方可以查看脚本的执行历史、执行结果。
    • 您可以单击“查看日志”,进入查看日志界面查看日志的详细信息记录。
    • 脚本执行历史结果可以进行权限管控,可设置为“仅自己可见”或“所有用户可见”,默认配置项请参见脚本执行历史展示
  9. 在编辑器上方,单击“保存”,保存该作业。

配置作业参数

单击编辑器右侧的“参数”,展开配置页面,配置如表4所示的参数。

表4 作业参数配置

功能

说明

变量

新增

单击“新增”,在文本框中填写作业参数的名称和参数值。

  • 参数名称

    名称只能包含字符:英文字母、数字、中划线和下划线。

  • 参数值
    • 字符串类的参数直接填写字符串,例如:str1。
    • 数值类的参数直接填写数值或运算表达式。

参数配置完成后,在作业中的引用格式为${参数名称}。

编辑参数表达式

在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述

修改

在参数名和参数值的文本框中直接修改。

掩码显示

在参数值为密钥等情况下,从安全角度,请单击将参数值掩码显示。

删除

在参数值文本框后方,单击,删除作业参数。

常量

新增

单击“新增”,在文本框中填写作业常量的名称和参数值。

  • 参数名称

    名称只能包含字符:英文字母、数字、中划线和下划线。

  • 参数值
    • 字符串类的参数直接填写字符串,例如:str1。
    • 数值类的参数直接填写数值或运算表达式。

参数配置完成后,在作业中的引用格式为${参数名称}。

编辑参数表达式

在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述

修改

在参数名和参数值的文本框中直接修改,修改完成后,请保存。

删除

在参数值文本框后方,单击,删除作业常量。

工作空间环境变量

查看工作空间已配置的变量和常量。

单击“作业参数预览”页签,展开预览页面,配置如表5所示的参数。

表5 作业参数预览

功能

说明

当前时间

仅单次调度才显示。系统默认为当前时间。

事件触发时间

仅事件驱动调度才显示。系统默认为事件触发时间。

周期调度

仅周期调度才显示。系统默认为调度周期。

具体时间

仅周期调度才显示。周期调度配置的具体运行时间。

起始日期

仅周期调度才显示。周期调度的生效时间。

后N个实例

作业运行调度的实例个数。

  • 单次调度场景默认为1。
  • 事件驱动调度场景默认为1。
  • 周期调度场景

    当实例数大于10时,系统最多展示10个日期实例,系统会自动提示“当前参数预览最多支持查看10个实例”。

在作业参数预览中,如果作业参数配置存在语法异常情况系统会给出提示信息。

如果参数配置了依赖作业实际运行时产生的数据,参数预览功能中无法模拟此类数据,则该数据不展示。

质量监控

对已编排好的单任务作业关联质量作业,当前暂不支持单任务Data Migration作业和单任务的实时作业。

质量监控支持并行和串行两种方式。单击画布右侧“质量监控”页签,展开配置页面,配置如表6所示的参数。

表6 质量监控配置

参数

说明

执行方式

选择质量监控的执行方式:

  • 并行:并行模式下,所有质量作业算子的上游都被设置为主算子。
  • 串行:串行模式下,质量作业将依照配置面板由上至下的顺序依次串联,顶部的质量作业依赖于主算子。

质量作业

关联质量作业。

  1. 单击“新增”,右侧自动弹出Data Quality Monitor算子的页面。
  2. 节点名称可自定义。
  3. DQC作业类型选择“质量作业”。
    说明:

    对账作业目前不支持。

  4. 选择需要关联的“质量作业名称”,其他参数根据实际业务需要配置。如果没有质量作业,请参考新建数据质量作业创建一个质量作业。
    说明:
    • 单击“新增”可以关联多个质量作业。
    • 单击可以修改已关联的质量作业。
    • 单击可以删除已关联的质量作业。
  5. 是否忽略质量作业告警

    是:质量作业告警可以忽略

    否:质量作业告警不可忽略,产生告警时,上报告警。

  6. 配置高级参数。
    1. 配置节点执行的最长时间。设置节点执行的超时时间,如果节点配置了重试,在超时时间内未执行完成,该节点将会再次重试。
    2. 失败重试。节点执行失败后,是否重新执行节点

      是:重新执行节点,请配置以下参数。

      超时重试

      最大重试次数

      重试间隔时间(秒)

      否:默认值,不重新执行节点
      说明:

      如果作业节点配置了重试,并且配置了超时时间,该节点执行超时后,系统支持再重试。

      当节点运行超时导致的失败不会重试时,您可前往“默认项设置”修改此策略。

      当“失败重试”配置为“是”才显示“超时重试”。

    3. 节点执行失败后的操作:

      终止当前作业执行计划:停止当前作业运行,当前作业实例状态显示为“失败”。

      继续执行下一节点:忽略当前节点失败,当前作业实例状态显示为“忽略失败”。

      挂起当前作业执行计划:暂停当前作业运行,当前作业实例状态显示为“等待运行”。

      终止后续节点执行计划:停止后续节点的运行,当前作业实例状态显示为“失败”。

  7. 单击“确定”,质量监控配置完成。

数据表

支持Hive SQL、Spark SQL、DLI SQL、DWS SQL、Doris SQL和RDS SQL单任务批处理作业可以查看右侧的数据表,单击表名前面的单选框,可以查看该数据的列名、字段类型和描述。

图1 查看数据表

调测并保存作业

作业配置完成后,请执行以下操作:

  1. 单击画布上方的运行按钮,运行作业。

    用户可以查看该作业的运行日志,单击“查看日志”可以进入查看日志界面查看日志的详细信息记录。

  2. 运行完成后,单击画布上方的保存按钮,保存作业的配置信息。

    保存后,在右侧的版本里面,会自动生成一个保存版本,支持版本回滚。保存版本时,一分钟内多次保存只记录一次版本。对于中间数据比较重要时,可以通过“新增版本”按钮手动增加保存版本。

下载或转储脚本执行结果

脚本运行成功后,支持下载和转储SQL脚本执行结果。系统默认支持所有用户都能下载和转储SQL脚本的执行结果。如果您不希望所有用户都有该操作权限,可参考配置数据导出策略进行配置。
  • 脚本执行完成后在“执行结果”中,单击“下载”可以直接下载CSV格式的结果文件到本地。可以在下载中心查看下载记录。
  • 脚本执行完成后在“执行结果”中,单击“转储”可以将脚本执行结果转储为CSV和JSON格式的结果文件到OBS中,详情请参见表7
    • 转储功能依赖于OBS服务,如无OBS服务,则不支持该功能。
    • 当前仅支持转储SQL脚本查询(query)类语句的结果。
    • DataArts Studio的下载或转储的SQL结果中,如果存在英文逗号、换行符等这种特殊符号,可能会导致数据错乱、行数变多等的问题。
    表7 转储配置

    参数

    是否必选

    说明

    数据格式

    目前支持导出CSV和JSON格式的结果文件。

    资源队列

    选择执行导出操作的DLI队列。当脚本为DLI SQL时,配置该参数。

    压缩格式

    选择压缩格式。当脚本为DLI SQL时,配置该参数。

    • none
    • bzip2
    • deflate
    • gzip

    存储路径

    设置结果文件的OBS存储路径。选择OBS路径后,您需要在选择的路径后方自定义一个文件夹名称,系统将在OBS路径下创建文件夹,用于存放结果文件。

    您也可以到下载中心配置默认的OBS路径地址,配置好后在转储时会默认填写。

    覆盖类型

    如果“存储路径”中,您自定义的文件夹在OBS路径中已存在,选择覆盖类型。当脚本为DLI SQL时,配置该参数。

    • 覆盖:删除OBS路径中已有的重名文件夹,重新创建自定义的文件夹。
    • 存在即报错:系统返回错误信息,退出导出操作。

    是否导出列名

    是:导出列名

    否:不导出列名

    字符集

    • UTF-8:默认字符集。
    • GB2312:当导出数据中包含中文字符集时,推荐使用此字符集。
    • GBK:国家标准GB2312基础上扩容后兼容GB2312的标准。

    引用字符

    仅在数据格式为csv格式时支持配置引用字符。

    引用字符在导出作业结果时用于标识文本字段的开始和结束,即用于分割字段。

    仅支持设置一个字符。默认值是英文双引号(")。

    主要用于处理包含空格、特殊字符或与分隔符相同字符的数据。

    关于“引用字符”和“转义字符”的使用示例请参考引用字符和转义字符使用示例

    转义字符

    仅在数据格式为csv格式时支持配置转义字符。

    在导出结果中如果需要包含特殊字符,如引号本身,可以使用转义字符(反斜杠 \ )来表示。

    仅支持设置一个字符。默认值是英文反斜杠(\)。

    常用转义字符的场景:

    • 假设两个引用字符之间的数据内容存在第三个引用字符,则在第三个引用字符前加上转义字符,从而避免字段内容被分割。
    • 假设数据内容中原本就存在转义字符,则在这个原有的转义字符前再加一个转义字符,避免原来的那个字符起到转义作用。

    关于“引用字符”和“转义字符”的使用示例请参考引用字符和转义字符使用示例

相对于直接查看SQL脚本的执行结果,通过下载和转储能够支持获取更多的执行结果。各类SQL脚本查看、下载、转储支持的规格如表8所示。
表8 SQL脚本支持查看/下载/转储规格

SQL类型

在线查看最大结果条数

下载最大结果条数

转储最大结果

DLI

1000

1000

无限制

Hive

1000

1000

10000条或3MB

DWS

1000

1000

10000条或3MB

Spark

1000

1000

10000条或3MB

RDS

1000

1000

不支持

Doris

1000

1000

1000条

引用字符和转义字符使用示例

  • 引用字符和转义字符使用说明:
    • 引用字符:用于识别分割字段,默认值:英文双引号(")。
    • 转义字符:在导出结果中如果需要包含特殊字符,如引号本身,可以使用转义字符(反斜杠 \ )来表示。默认值:英文反斜杠(\)。
      1. 假设两个quote_char之间的数据内容存在第三个quote_char,则在第三个quote_char前加上escape_char,从而避免字段内容被分割。
      2. 假设数据内容中原本就存在escape_char,则在这个原有的escape_char前再加一个escape_char,避免原来的那个字符起到转义作用。
  • 应用示例

    在进行转储时,如果引用字符和转义字符不填,如下图所示。

    下载的.csv用excel打开以后如下图所示,是分成两行的。

    在转储时,如果引用字符和转义字符都填写,比如,引用字符和转义字符都填英文双引号("),则下载以后查看结果如下图所示。