Skip to main content

任务发布流程

概述

任务发布指将一个项目内的任务连同该任务关联的表、函数等拷贝至另一个项目的过程。

严谨的数据开发流程中一般会需要两个或三个项目:

两个项目的场景中一个项目作为开发环境,一个作为生产环境,开发者通常会在开发环境的项目内完成代码开发、流程调试、依赖属性和周期调度属性配置,再将任务发布至生产环境的项目调度运行;

三个项目场景中则包含开发环境、测试环境和生产环境,与两个项目的场景相比多出来的测试环境的项目则是将开发环境中的任务模拟生产环境进行运行,确认无误后再发布至生产环境,为任务的发布增加了一层安全性校验。

任务发布流程

离线开发中任务的发布方式有一键发布和导入导出式发布两种,分别适用不同的发布场景:当开发环境和生产环境网络打通时,一键发布较为方便快捷,如下左图;当开发环境和生产环境网络隔离时,需要通过将任务从开发环境中导出后在生产环境中导入从而完成发布,如下右图;

image.png

tip

除了周期任务和手动任务外,现在离线创建发布包还支持将资源、函数、表、存储过程和组件作为打包对象,发布方式与任务一致。

周期任务和手动任务提交后才会出现在「创建发布包」对象列表中。

发布包创建

将需要发布的对象进行打包,方便后续的发布。在进行打包时有以下一些关键操作。

添加关联:

将SQL任务中需要用到或更新的资源、组件、函数、表等选择关联后,他们将随任务的发布一起在生产环境完成创建或覆盖。

数据同步任务支持关联表的源段和目标端类型主要如下表所示。数据同步任务关联表的逻辑是发布时,在生产项目数据同步映射的目标数据源下进行「一键建表」操作,因此支持的源表类型和目标表类型和「一键建表」功能支持的类型一致。

源表类型目标表类型
关系型数据库:
MySql、Oracle、SqlServer、PostgreSql、DMDB、DB2、PolarDB、Kingbase
大数据存储:
Hive、Phoenix、MaxCompute、SparkThrift
分析型数据库:
AnalyticDB、CarbonData、ClickHouse、Impala、TiDBMPP、SAP HANA
数据库:
GBase、GaussDB、GreenPlum
关系型数据库:
MySql、PostgreSQL 、Oracle
大数据存储:
Hive、SparkThrift
分析型数据库:
TiDB、AnalyticDBMPP、SAP HANA、Doris
数据库:
LibrA

image-20230224152611509

更新环境参数:环境参数若发生变更需要更新到生产环境,则需要在待打包对象中勾选。

image-20230224152637950

打包:将待打包对象中选中的所有任务、资源、函数、表打成一个包,打包成功后会出现在「发布至目标项目」列表中。

image-20230224152809942

发布校验

在进行「一键发布」和「导入导出式发布」时,会对发布包的进行全流程校验,如下图所示:

image-20230506105616750

引擎

当引擎校验存在问题时,是因为目标项目下不存在与测试项目相同的引擎,将导致任务发布后也无法运行。发布包校验遇到这种情况时,会进行如下图提示。

image-20230224153000353

数据源

当发布包内容含周期/手动任务、表时,发布包校验时会进行数据源校验。

1、当发布方式为导入导出式发布时

发布包数据源校验会展示发布包中全部所需的数据源名称和类型,包括发布包数据源与本项目数据源。

image-20230224153039093

若在本项目中能找到与发布包同名同类型的数据源,系统会直接预选该数据源作为映射数据源,也可进行调整,如上图的“gp1(Greenplum)”。若在本项目中无法找到与发布包同名同类型的数据源,需要手动选择。

当发布包中所有数据源都建立了映射关系后,数据源校验才能通过。

tip

目前仅支持到数据源的映射,Schema和表的映射后续会陆续进行支持。支持自定义SQL的数据源,可以暂时通过自定义SQL,用自定义参数填写schema和表名称,再通过参数映射的方式去实现

2、当发布方式为一键发布时

一键发布的数据源映射关系可在「离线开发->数据源」中进行配置,在发布包校验时无需重新配置。若存在数据源未配置映射,将会进行如下图提示。

image-20230224153109083

任务

当发布包内容含周期/手动任务时,发布包校验时会进行任务校验。当任务校验出现异常情况时是因为发布包中同步任务字段映射时发现映射表的字段映射配置无法发布到生产表(比如生产表缺失相应字段)。发布包校验时,若出现这种情况,会进行如图提示

image-20230224153213444

上游依赖

当发布包内容含周期/手动任务时,发布包校验时会进行上游依赖校验。当上游依赖出现异常情况时是因为发布包中部分任务缺失上游依赖任务。发布包校验时,若出现这种情况,会进行如图提示

image-20230224153240120

资源

当发布包中存在以下任一内容时,发布包会进行资源校验:

1、需要引用资源的以下函数:sparksql udf、hivesql udf

2、需要引用资源的以下手动/周期任务:spark、pyspark、python、shell、shell on agent、hadoopmr、flink及相关工作流

当资源校验出现异常情况,是因为在发布包和目标项目中无法找到相关资源导致函数、任务不完整。

函数

当发布包中存在引用到函数/存储过程的以下手动/周期任务:spark sql、hive sql、greenplum sql、adb sql及相关工作流,发布包会进行函数校验

当函数校验出现异常情况,是因为在发布包和目标项目中都无法找到相关函数导致任务出错。

组件

当发布包存在引用到组件的以下周期/手动任务:spark sql、hive sql 及相关工作流,发布包会进行组件校验

当组件校验出现异常情况,是因为在发布包和目标项目中都无法找到相关组件导致任务出错。

当发布包存在数据同步、SQL类周期/手动任务里有新建的表,发布包会进行表校验

当表校验出现异常情况,是因为在发布包和目标项目中都无法找到相关表导致任务出错。

责任人

当发布包存在周期/手动任务或表时,发布包会进行责任人校验

责任人校验出现异常情况,是因为发布时任务、表责任人不存在。

发布

如果是一键发布,发布包生成通过发布包校验后,可以在「发布至目标项目」直接选中发布包进行发布。如果是导入导出式发布,发布包生成后需要导出,在目标项目导入后,在「发布至本项目」中进行发布。