Shell节点

更新时间:
复制为 MD 格式

DataWorks Shell节点面向数据开发工程师,支持标准Shell脚本的无交互式执行,适用于OSS文件处理、工具调用等自动化任务。该节点原生集成ossutil,可通过配置文件或命令行参数安全访问 OSS,并支持调度参数注入、资源引用及基于自定义镜像的运行环境扩展,满足生产级调度与运维需求。

权限说明

进行节点开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员角色权限。详情请参见:为工作空间添加空间成员

使用说明

  1. 语法限制

    • 支持标准Shell语法,不支持交互性语法。

  2. 运行环境与网络访问

    • Shell节点支持Serverless资源组(推荐)或旧版独享调度资源组执行。如需购买使用Serverless资源组,详情请参见使用Serverless资源组

    • Serverless资源组上运行Shell节点时,如果您需要访问的目标端有白名单限制,请添加Serverless资源组对应IP至目标端应用。

    • 使用Serverless资源组,单任务支持最大配置64CU,建议不超过16CU,以避免CU过大导致资源不足,影响任务启动。

  3. 扩展开发环境

    • 如任务需要特定的开发环境支持,可使用DataWorks提供的自定义镜像功能,定制化构建任务执行所需的镜像。更多信息,请参见自定义镜像

  4. 资源与多脚本调用

    • 避免在Shell节点中启动大量子进程,由于目前Shell节点没有资源限制,大量子进程可能会影响运行在该调度资源组上的其他任务。

    • 任务代码大小不能超过128 KB。

快速入门

下面将以一个输出"Hello DataWorks!"示例,带您完成Shell节点的创建、调试、配置与发布全流程。

节点开发

  1. 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与运维 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发

  2. 鼠标悬停至新建图标,单击新建节点 > 通用 > Shell,在新建节点对话框输入节点名称及路径。

  3. 在脚本编辑区内输入标准shell代码(不支持交互式语法):

    echo "Hello DataWorks!"
  4. 完成代码开发后,单击image,选择目标资源组和镜像,执行通用Shell节点任务。

  5. 脚本通过调试验证后,在右侧单击调度配置,完成调度时间属性,资源属性等生产级调度策略配置,以支撑节点按计划周期性自动执行。配置节点调度属性,详情请参见节点调度配置

节点发布与运维

  1. 任务调度属性配置完成后,您可提交节点至开发环境,并发布至生产环境进行周期性调度。

  2. 发布成功后,任务将按照您配置的调度进行周期运行。您可通过单击左上角image图标,在弹出导航页中依次选择全部产品 > 数据开发与运维 > 运维中心,进入运维中心,随后在左侧菜单栏定位至任务运维 > 周期任务运维 > 周期任务,即可查看已发布的周期任务。详细功能说明请参见:运维中心入门

高级用法

引用资源

  1. DataWorks支持通过资源管理将需要在Shell节点中使用的资源上传至DataWorks,详情请参见资源管理

    说明

    资源需要提交后才可被节点引用。若生产任务需使用该资源,还需将该资源发布至生产环境。详情请参见发布任务

  2. 在数据开发左侧目录树下找到已上传的资源。

  3. 右键单击该资源,选择引用资源,则该资源将被引用至当前节点中。您可在节点编辑页面,通过编写代码运行该资源。

    使用资源

    说明

    引用成功后,系统将自动在脚本顶部插入形如##@resource_reference{resource_name} 的声明注释。

    该注释是 DataWorks 识别资源依赖、在任务运行时自动挂载对应资源至执行环境的必要标识,请勿手动修改或删除。

使用调度参数

调度参数以位置参数形式注入 Shell 节点,不支持自定义变量名:DataWorks 将您在节点调度配置中设置的调度参数值,按顺序作为 $1$2$3 … 等位置参数传递给 Shell 脚本,当参数数量超过9时,需使用 ${10}${11} 等大括号语法以确保正确解析。多个参数值需用空格分隔,且顺序必须与脚本中引用的位置严格一致。

配置参数例如,本示例中:

  • 内置参数$1赋值取业务时间:$bizdate

  • 自定义参数$2赋值取业务时间:${yyyymmdd}

  • 自定义参数$3赋值取业务时间: $[yyyymmdd]

说明
  • 若某个参数值包含空格,可用引号包裹,此时引号内的整个内容被视为一个独立参数。

  • 关于更多配置及使用调度参数信息,详情请参见配置并使用调度参数

使用ossutil访问OSS

DataWorks Shell节点原生支持阿里云OSS命令行工具 ossutil,支持Bucket 管理、文件上传/下载、批量操作等任务。您可通过配置文件方式或命令行参数方式配置访问凭证使用ossutil访问OSS。

附录:脚本退出码说明

根据脚本退出码可进一步判断脚本是否运行成功。

  • 退出码0:表示成功。

  • 退出码-1:表示进程被终止。

  • 退出码2:需要平台自动重跑一次任务。

  • 其它退出码:表示失败。

下图为Shell节点执行成功(退出码为 0)时的标准运行日志示例。

image

说明

基于Shell底层机制,Shell节点中整个脚本的退出码 = 最后一条被执行命令的退出码。

相关文档

了解如何在Shell节点使用Python 2Python 3命令运行Python脚本:详情请参见Shell类型节点运行Python脚本