DataWorks的发布中心是数据开发中任务发布功能的升级版,主要解决多环境间节点、函数、资源、组件等对象的发布问题。当您需要将源工作空间中的节点、函数等对象同步至目标工作空间时,可以借助该功能实现跨环境的一键发布。本文为您介绍发布中心的应用场景、逻辑说明、发布流程等内容。
功能介绍
发布中心的发布操作以节点、函数、资源、组件等为最小执行单位,其关联的业务流程及节点间依赖关系将同步部署至目标工作空间。详情请参见发布变更逻辑。
基于不同的发布环境,DataWorks的发布中心支持同工作空间发布、跨工作空间发布和跨云发布。
该功能仅支持标准模式且使用了新版数据开发的工作空间,在同一工作空间下,将节点、函数、资源、组件等对象批量从开发环境发布至生产环境。
跨工作空间发布主要用于同地域同一阿里云账号下,将节点、函数、资源、组件等对象从一个简单模式的工作空间发布至另一个工作空间。基于该功能,您还可以实现简单模式工作空间的生产开发环境隔离,更多信息,请参见附录:简单模式如何实现开发与生产隔离。
该功能仅支持使用了旧版数据开发的工作空间跨账号、跨地域或跨云平台(例如,金融云、政务云等)发布节点、函数、资源、组件等对象。其本质也是将节点由源工作空间迁移发布至目标工作空间,只是两个工作空间所归属的地域、账号、云平台不同。
发布变更逻辑
如果节点存在依赖关系,则必须在上游节点成功发布至目标工作空间后,下游节点才能执行发布操作。发布节点的变更情况如下:
节点发布时,系统会更改所有前缀为源工作空间名称的节点输入输出,将其前缀由源工作空间名称更换为目标工作空间名称。同时,根据节点是否存在跨工作空间依赖,您可以基于业务需求配置发布环境的依赖映射参数,不同配置情况,节点发布后的上下游依赖及输入输出名称不同。详情请参见:
发布MaxCompute引擎类任务,系统会修改任务代码中涉及的源工作空间名称为目标工作空间名称,详情请参见MaxCompute引擎类任务的代码变更。
不存在跨工作空间依赖
project1中的节点不存在跨工作空间依赖,将project1的所有节点发布至project2。
发布后,所有的节点输入输出名称中,涉及的project1前缀变更为project2。例如:
task_A的输入名:由
project1_root变更为project2_root。task_A的输出名:由
project1.task_A变更为project2.task_A。
存在跨工作空间依赖,未设置跨工作空间依赖映射
project1.task_A跨工作空间依赖project2.task_A,将project1的所有节点发布至project3。
发布后,节点的变更如下:
节点的输入输出:所有的节点输入输出名称中,涉及的
project1前缀变更为project3。节点的跨工作空间依赖:原
project1.task_A跨工作空间依赖的project2.task_A,发布后,project3.task_A依然跨工作空间依赖project2.task_A。
存在跨工作空间依赖,设置了跨工作空间依赖映射
project1.task_A跨工作空间依赖project2.task_A,将project1的所有节点发布至project4,并设置project2依赖映射project3。
发布后,节点的变更如下:
节点的输入输出:所有的节点输入输出名称中,涉及的
project1前缀变更为project4。节点的跨工作空间依赖:原
project1.task_A跨工作空间依赖的project2.task_A,发布后,project4.task_A跨工作空间依赖变更为依赖project3.task_A。
源工作空间的节点跨工作空间依赖使用系统输出名时(即源工作空间节点的列表中包含了非本空间下节点的系统输出名),建议您重新修改依赖使用非系统的输出名,否则会出现发布失败情况。
不建议引用系统生成的输出名:
在未使用新版数据开发(Data Studio)的工作空间中,系统输出名展示格式为
工作空间名称.文件ID_out,例如shanghai_simple02.504822000_out。建议引用如下格式的输出名:
工作空间名称.产出表名称(推荐)工作空间名称.节点名称
MaxCompute引擎类任务的代码变更
MaxCompute引擎类任务(例如,ODPS SQL、ODPS Spark等 )发布到目标工作空间后,执行任务代码时,系统会将任务代码中涉及的源工作空间名称更换为目标工作空间名称。
示例task_A为ODPS SQL/MaxCompute SQL节点。在project1中查询table_A的代码为SELECT * FROM project1.tableA,将project1的所有节点发布至project2。
节点发布至project2后,查询table_A的代码将变更为SELECT * FROM project2.tableA。