DGC数据开发 --- 版本管理功能介绍

举报
JQIU 发表于 2021/05/15 18:37:35 2021/05/15
【摘要】 介绍DGC版本管理

背景介绍


作业、脚本版本管理是DGC数据开发新上线的特性,背景是根据大量客户在实际使用中的反馈,我们了解到客户需要一种手段来管理作业版本,保证版本可回溯,历史作业版本可管理、可查看。作业需要区分开发态生产态,在作业开发界面编辑作业、测试运行作业均属于开发态,而正式调度的作业可以理解为生产态,作业不能随意保存之后就正式发布进行调度,开发态和生产态应该完全隔离。所以我们将作业保存和作业提交拆分成两个动作,保存只用于保存开发态正在调试中的作业,确认调试完成的作业,再点击提交,正式发布到生产环境进行调度。


版本管理功能介绍


版本管理功能涉及脚本开发和作业开发,下面的章节将会分别介绍脚本版本管理和作业版本管理的相关特性。

脚本版本管理


  • 开发态脚本调试与版本提交

    没有提交过版本的脚本均处于开发态,用于调测。在脚本开发界面点击运行,运行的是开发态的脚本内容,即脚本编辑框里面的内容。新建的脚本必须先保存之后才可以提交版本。点击保存,仅仅是保存开发态的脚本内容,若要使脚本正式被作业调度起来,必须提交版本。如果脚本已经提交过版本,修改了脚本内容之后,必须重新提交新版本,修改才会生效。                   

     作业调度默认关联脚本最新提交的版本内容,举例说明:

     我们有两个版本的脚本,v1版本的脚本内容为 SELECT * FROM demo_infos;  v2版本的脚本内容为SELECT * FROM partition_test_1;

   

      下面我们在作业开发中拖出一个DLI SQL节点,关联我们上面的脚本点击执行调度。

     

     前往实例监控,点击查看日志,可以从日志中看到,作业调度中执行的是V2版本,即最新提交版本的脚本内容

   

     

     此时如果我们修改了脚本内容,将语句修改为SELECT * FROM qiujiaxin;但并没有提交版本,那么作业调度将依然是使用V2版本的脚本内容进行调度。

     

     

      此时我们将修改后的内容提交为 V3版本,那么下一个调度周期将自动使用最新的版本,即V3版本进行调度

       

         

  • 脚本版本回滚

     点击右侧版本页签,可以将脚本回滚到任意一个已提交的旧版本上,请注意,回滚仅仅是将老版本回滚到开发态,回滚之后需要重新提交才会生效。比如回滚到v1版本,需要重新提交,生成一个v4版本,因为调度默认使用最新的版本,如果不重新提交,那么最新的版本依然是v3。v4版本和v1版本内容其实是完全一样的,重新提交版本只是为了让回滚的内容生效。

     

     脚本的回滚范围包括以下内容:

     DLI SQL:数据连接、数据库、资源队列、DLI环境变量、脚本内容;

     DWS SQL:数据连接、数据库、脚本内容;

     HIVE SQL:数据连接、数据库、资源队列、脚本内容;

     SPARK SQL:数据连接、数据库、脚本内容;

     SHELL:主机连接、参数、交互式参数、脚本内容;

     RDS SQL:数据连接、数据库、脚本内容;

     PRESTO SQL:数据连接、模式、脚本内容;

     PYTHON:主机连接、参数、交互式参数、脚本内容;

     FLINK:脚本内容;

  • 脚本版本对比

     点击展开右侧版本列表,勾选任意两个版本的脚本,可以对比查看两个版本的脚本内容差异。

       若勾选两个不同的版本,则对比所选的两个版本的脚本内容。若只勾选一个版本,则对比所选版本和开发态脚本的内容差异。 

       左上角的“上一个不同”和“下一个不同”按钮,可以直接跳到上一个或者下一个不相同的地方,便于用户查看脚本内容差别。


  • 脚本导入导出

     脚本导出的是开发态的已保存内容。

     脚本导入会覆盖开发态的脚本内容,并自动提交一个新版本


作业版本管理


  • 开发态作业调试和版本提交

     作业画布界面展示的是开发态的作业内容,点击保存也是保存开发态的内容,保存不会影响正式的作业调度,只有提交版本之后,调度才会使用最新提交的作业内容进行调度。

     点击测试运行,执行的是开发态的作业内容,用于调测;如果是SQL类型的节点,且节点关联了脚本,测试运行将会执行开发态的脚本内容。

     Tips:这里其实只要形成开发态和生产态的概念,就不会混乱。即开发态的作业对应开发态的脚本,生产态的作业对应生产态的脚本。测试运行是执行开发态的作业,所以关联的脚本内容也是开发态的,目的是让用户进行调测。正式调度的作业是生产态的,所以关联的脚本也是生产态的,即最新提交的版本内容。所以如果修改了脚本内容,想让对应的作业调度感知到最新修改的内容,请记得提交脚本版本哟!

     点击提交版本,会用当前画布中的作业内容去提交,生成一个版本。提交版本之后再点击执行调度,就会使用最新的版本进行周期调度。


  • 作业版本回滚

     与脚本类似,作业同样也支持回滚到任意历史版本,点击回滚之后,会将历史版本的内容回滚到开发态界面,同样需要重新提交之后才会被调度。

    作业回滚包括以下内容:

    1、画布界面的内容,包括所有节点属性,节点之间的连线关系等。

    2、作业基本信息面板中的属性,除了作业标签,作业标签没有版本的概念。

     3、作业调度配置中的所有信息。

     4、作业参数配置。

     5、节点血缘关系配置。


  • 作业版本查看

     点击查看某个作业版本,将会打开新窗口展示该版本的作业配置详情。查看作业窗口仅用于展示某个版本的内容,便于用户对比两个不同版本的作业内容差异。查看窗口不能修改任何作业属性。

  • 作业版本对比

     与脚本版本对比类似,如果勾选两个版本,则会比较两个不同版本的作业属性JSON体。若只勾选一个版本,则会比较选中的版本和开发态的作业属性JSON体之间的差异。


     此处对比的是作业定义的JSON体,对普通用户来说要看懂JSON体信息可能有一些难度。下面给出一些基本JSON字段的介绍,方便用户看懂JSON体的内容。

     以下面这个JSON体为例:

  • name:表示作业名称
  • objects:是一个数组,包含画布中的所有节点属性信息和连线关系
  • params:是一个数组,包含作业参数信息(变量、常量)
  • pipelineId: 表示作业ID
  • schedule:是一个对象,包含作业调度配置信息
  • taskProperties:是一个对象,包含作业基本信息面板中的配置


  • 作业导入导出

     作业导出的是开发态的最新的已保存内容。如果作业包含SQL类型的节点,那么导出的脚本内容也是开发态已保存的脚本。

     导入会覆盖开发态的内容,并自动提交一个新版本

  • 作业依赖关系图

     作业依赖关系图有以下4个入口:

     1、从作业目录上查看依赖关系图,此时展示的是开发态之间的作业依赖关系。

     

     2、从作业监控页面查看作业依赖关系图,此时展示的是生产态之间的作业依赖关系。

    3、在作业监控页面点击补数据,选择需要补数据的上下游作业,展示的是生产态之间的作业依赖关系。

 


     4、实例监控界面,选择重跑,选择重跑上下游作业实例 ,此时展示的是生产态的作业依赖关系图。

  • 作业监控详情页面

     作业监控界面展示最新已提交的作业版本内容。若作业没有提交过任何版本,则该界面空白,不会有任何内容。


  • 批量作业配置

     批量修改作业配置,会修改开发态的作业配置,并以修改后的配置自动提交一个新版本

                      

  • 实例监控列表

     实例列表中可以看到每个实例跑的是哪一个版本内容。


常见问题


Q1:版本号是如何生成的,是递增的还是循环的,总共可以提交多少个版本?

A1:版本号是后台自动生成的,从数字1开始递增,每提交一个版本,版本号自增1。目前最多允许提交10个版本,超过10个版本,旧的版本会自动被老化,不再展示在页面上。


Q2:我修改了脚本内容,并且已经提交过脚本版本了,对应的作业还需要重新提交版本吗?

A2:不需要,作业的下一个调度周期会自动引用最新的已提交脚本。


Q3:我批量导入的作业还需要手动一个个提交版本吗?

A3:不需要,导入的作业会统一自动提交一个版本。


Q4:重跑、补数据等操作使用的是什么版本的作业?

A4:重跑、补数据、继续运行等操作,均使用最新的已提交作业版本去执行。比如一个实例第一次运行的时候使用的是V2版本,之后又提交了一个新版本V3,此时重跑这个实例,那么会使用V3版本的作业内容去重跑这个实例。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。