云服务器内容精选

  • 方案说明 DataArts Studio 数据开发模块支持以事件触发的方式运行作业,因此通过DIS或者 MRS Kafka作为作业依赖纽带,可以跨空间实现作业调度。 如下图,工作空间A中的job1运行完成后,可以使用DIS Client或Kafka Client发送消息触发中继作业job_agent;job_agent配置事件触发调度,根据DIS Client或Kafka Client发送的消息触发运行后,判断消息是否符合预期,符合则触发job2作业运行,否则不再触发job2运行。 图1 调度方案
  • 配置方法(Kafka Client) 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。 单击第一个工作空间A的“数据开发”,系统跳转至数据开发页面,新建数据开发作业job1。分别选择Dummy节点和Kafka Client节点,选中连线图标并拖动,编排如图7所示的作业。 Dummy节点不执行任何操作,本例选择Dummy节点仅为演示操作,实际使用中您可以用其他作业节点替代。 Kafka Client节点用于发送消息。您需要选择Kafka连接和Topic名称,并将发送数据配置为EL表达式job1,#{DateUtil.getDay(Job.startTime)}。则当本作业执行完成后,将使用Kafka Client发送一条字符串消息:job1,作业执行日期。例如2月15日作业job1执行,实际的消息则为:job1,15。 作业调度等其他作业参数无需配置,保持默认即可。 图7 job1作业Kafka Client节点配置 在另一个工作空间B,新建数据开发作业job_agent。分别选择Dummy节点和Subjob节点,选中连线图标并拖动,编排图8所示的作业。 图8 job_agent作业调度配置 Dummy节点不执行任何操作,本例选择Dummy节点用于设置Dummy节点到Subjob节点之间连线的IF条件。 Subjob节点用于将需要后续执行的作业job2作为子作业引用执行。实际使用中您可以引用已有作业,也可以使用其他作业节点替代Subjob节点。 作业的调度方式设置为“事件驱动调度”,连接名称和Topic选择为工作空间B中的Kafka连接和Topic,需要与工作空间A中job1作业中Kafka Client节点所选择的Kafka连接和Topic相对应,用于通过Kafka消息触发作业运行。 IF判断条件设置,用于校验Kafka Client节点发送的消息是否符合预期,符合才会继续执行Subjob节点,否则跳过。 右键单击连线,选择“设置条件”,在弹出的“编辑参数表达式”文本框中输入IF判断条件,失败策略保持默认即可。IF判断条件为通过EL表达式语法填写三元表达式,当三元表达式结果为true的时候,才会执行连线后面的节点,否则后续节点将被跳过。 #{StringUtil.equals(StringUtil.split(Job.eventData,',')[1],'21')} 该IF判断条件表示,仅当从Kafka通道获取的消息逗号后的部分为“21”时,即每月21日时,才执行后续的作业节点。 如果您需要匹配多条消息记录,可以添加多个Dummy节点并分别添加到Subjob节点的IF条件,然后将数据开发组件配置项中的“多IF策略”设置为“逻辑或”即可。 图9 编辑参数表达式 测试运行作业job_agent,在工作空间A的作业job1未运行的情况下,前往实例监控中查看执行结果是否符合预期。 由于作业job1未运行即未发送消息,则job_agent作业中的Subjob节点被跳过,证明IF条件判断生效。 图10 Subjob节点被跳过 启动调度job_agent。然后测试运行工作空间A作业job1,待job1实例运行成功后,前往工作空间B实例监控中查看作业运行结果是否符合预期。 job_agent被触发运行。 如果当天日期和IF条件中的日期匹配,则job_agent作业中的Subjob节点成功运行、子作业job2也执行完成。否则Subjob节点被跳过。 图11 Subjob节点成功运行
  • 配置方法(DIS Client) 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。 单击第一个工作空间A的“数据开发”,系统跳转至数据开发页面,新建数据开发作业job1。分别选择Dummy节点和DIS Client节点,选中连线图标并拖动,编排如图2所示的作业。 Dummy节点不执行任何操作,本例选择Dummy节点仅为演示操作,实际使用中您可以用其他作业节点替代。 DIS Client节点用于发送消息。您需要选择DIS所属Region和通道,并将发送数据配置为EL表达式job1,#{DateUtil.getDay(Job.startTime)}。则当本作业执行完成后,将使用DIS Client发送一条字符串消息:job1,作业执行日期。例如2月15日作业job1执行,实际的消息则为:job1,15。 作业调度等其他作业参数无需配置,保持默认即可。 图2 job1作业DIS Client节点配置 在另一个工作空间B,新建数据开发作业job_agent。分别选择Dummy节点和Subjob节点,选中连线图标并拖动,编排图3所示的作业。 图3 job_agent作业调度配置 Dummy节点不执行任何操作,本例选择Dummy节点用于设置Dummy节点到Subjob节点之间连线的IF条件。 Subjob节点用于将需要后续执行的作业job2作为子作业引用执行。实际使用中您可以引用已有作业,也可以使用其他作业节点替代Subjob节点。 作业的调度方式设置为“事件驱动调度”,DIS通道名称选择为工作空间A中job1作业中DIS Client节点所选择的通道,用于通过DIS消息触发作业运行。 IF判断条件设置,用于校验DIS Client节点发送的消息是否符合预期,符合才会继续执行Subjob节点,否则跳过。 右键单击连线,选择“设置条件”,在弹出的“编辑参数表达式”文本框中输入IF判断条件,失败策略保持默认即可。IF判断条件为通过EL表达式语法填写三元表达式,当三元表达式结果为true的时候,才会执行连线后面的节点,否则后续节点将被跳过。 #{StringUtil.equals(StringUtil.split(Job.eventData,',')[1],'21')} 该IF判断条件表示,仅当从DIS通道获取的消息逗号后的部分为“21”时,即每月21日时,才执行后续的作业节点。 如果您需要匹配多条消息记录,可以添加多个Dummy节点并分别添加到Subjob节点的IF条件,然后将数据开发组件配置项中的“多IF策略”设置为“逻辑或”即可。 图4 编辑参数表达式 测试运行作业job_agent,在工作空间A的作业job1未运行的情况下,前往实例监控中查看执行结果是否符合预期。 由于作业job1未运行即未发送消息,则job_agent作业中的Subjob节点被跳过,证明IF条件判断生效。 图5 Subjob节点被跳过 启动调度job_agent。然后测试运行工作空间A作业job1,待job1实例运行成功后,前往工作空间B实例监控中查看作业运行结果是否符合预期。 job_agent被触发运行。 如果当天日期和IF条件中的日期匹配,则job_agent作业中的Subjob节点成功运行、子作业job2也执行完成。否则Subjob节点被跳过。 图6 Subjob节点成功运行