实践目的

通过本次实践了解离线开发任务发布的方法。

准备工作

准备工作包括发布配置和接收配置以及相应的用户权限设置。

发布方准备工作

首先,需要在发布方(此处为“mammut - 建德十”)配置管理中完成发布配置,进入配置管理页面选择发布配置,添加“mammut - 建德十”发布至“mammut - 建德十二”。
离线开发任务发布 - 图1

其次,还需要功能权限、Yarn队列权限以及库的建表、读、写、改表、删表权限。

  • 功能权限:
    离线开发任务发布 - 图2

  • Yarn队列权限:
    离线开发任务发布 - 图3

  • 库权限:
    离线开发任务发布 - 图4

注意事项:
【权限相关】离线开发
1)如果在离线开发无法新建任务、提交上线等,在项目中心-功能权限中添加;
2)如果在离线开发,某个任务线上任务在编辑调度时无法选择队列,或者在自助分析无法选择Hive引擎,无法选择队列,在项目中心-队列权限中添加;
3)如果无法操作库表,比如建表、修改表,需要在“安全中心-权限中心”中申请库的建表、该表权限。
【权限相关】发布中心
1)如果没有发布中心权限,可在安全中心的项目组级角色中进行添加。

接收方准备工作

首先,需要在接收方(此处为“mammut - 建德十二”)配置管理中完成接收配置,进入配置管理页面选择接收配置,添加“mammut - 建德十二”接收“mammut - 建德十”。
离线开发任务发布 - 图5

其次,还需要功能权限、Yarn队列权限以及库的建表、读、写、改表、删表权限。

  • 功能权限:
    离线开发任务发布 - 图6

  • Yarn队列权限:
    离线开发任务发布 - 图7

  • 库权限:
    离线开发任务发布 - 图8

    注意事项:
    【权限相关】离线开发
    1)如果在离线开发无法新建任务、提交上线等,在项目中心-功能权限中添加;
    2)如果在离线开发,某个任务线上任务在编辑调度时无法选择队列,或者在自助分析无法选择Hive引擎,无法选择队列,在项目中心-队列权限中添加;
    3)如果无法操作库表,比如建表、修改表,需要在“安全中心-权限中心”中申请库的建表、该表权限。
    【权限相关】发布中心
    1)如果没有发布中心权限,可在安全中心的项目组级角色中进行添加。

实践步骤

步骤一:在发布方创建一个dim表

1)在发布方的“自助分析”产品中,执行SQL创建维表,代码如下:

CREATE TABLE test_easysubmit.dim_user_info_{此处可替换为操作者的名称拼音}_p
(
  user_id STRING COMMENT '用户id',
  user_name STRING COMMENT '用户名称',
  province STRING COMMENT '省份名称',
  city STRING COMMENT '城市名称'
)
COMMENT '用户维表'
PARTITIONED BY (ds STRING COMMENT '时间分区yyyy-MM-dd') 
STORED AS PARQUET
TBLPROPERTIES ('PARTITION_LIFECYCLE' = '365d');

2)下图为运行成功状态:
离线开发任务发布 - 图9

步骤二:发布方创建一个dim表产出任务

1)在离线开发的页面新建任务,任务名可自定义,此处用之前创建表的名称“dim_user_info_byxx_p”。
离线开发任务发布 - 图10
2)在新建的任务中,从右侧拖入SQL节点,并进行命名,此处节点命名为“dml_dim_user_info_byxx_p”。
离线开发任务发布 - 图11
3)双击SQL节点,并将下方代码贴如SQL中,点击右上角“临时保存”。代码如下:

insert overwrite table test_easysubmit.{此处为前序步骤中各位创建的表}
partition (ds='${azkaban.flow.1.days.ago}')
select id as user_id,
        name as user_name,
        province,
        city
from test_easysubmit.ods_user_info_byxx_p
where ds='${azkaban.flow.1.days.ago}';

离线开发任务发布 - 图12
4)保存节点后,提交上线。
离线开发任务发布 - 图13
5)在线上模式,点击“编辑调度”,添加对“ods_user_info_byxx_p”任务的“ods_user_info_byxx_p”节点的依赖,并选择“queue_byxx1”队列。(此处根据实际情况进行选择)
离线开发任务发布 - 图14

说明:添加依赖,用于演示后续创建资源时的资源自动替换功能;选用该队列,是因为接收方也需要有同名队列,且该名称的队列已在接收方创建。
6)配置完成后点击确定任务状态变为“已调度”。

步骤三:发布方创建dim表产出任务的“离线开发任务”资源

1)进入发布中心,选择选择创建“离线开发任务”。
离线开发任务发布 - 图15
2)配置将要发布的内容及接收方。其中,接收方选择“接收方项目-集群”为“mammut - 建德十二”。
离线开发任务发布 - 图16
3)选择接收方后,进入下一步,系统会进行接收方环境检测。如果出现不满足的检测项,需要按照提示排查。到这一步,先不要点击“全部创建”或“全部创建并发布”,请先往下阅读,完成下面步骤。

说明:当前案例下,会提示在接收方不存在维表“test_easysubmit.dim_user_info_byxx_p”,此时可通过快捷入口,前往创建“表DDL”资源。在创建完“表DDL”资源后,可返回到该页面,再进行“全部创建”。

步骤四:发布方创建dim表的“表DDL”资源

1)在上述步骤中,点击“快速创建“表DDL”资源”后,会进入创建页面,并自动带上库表名称。接收方需要选中“接收方项目-集群”为“mammut - 建德十二”。配置完成后,点击“下一步”。
离线开发任务发布 - 图17
如果仅仅是需要发布一个表,用户也可在首页进入。
离线开发任务发布 - 图18
2)如下图,为创建“表DDL”资源的第2步“检测接收方环境”。由于接收方不存在该表,因此会自动生成发布方的建表语句,作为接收方的发布内容。目前按照show create table获得建表语句,但是对于内部表,去掉了LOCATION参数。此处不需要修改DDL内容,直接点击“全部创建”。
离线开发任务发布 - 图19

步骤五:发布方创建dim表的“表DDL”资源

1)在“离线开发任务”和“表DDL”资源都创建后,可在发布中心的“待发布资源”中查看到2条资源。
选中2条资源,并“添加到发布池”。添加后,资源名称上也会有对应的标记。
离线开发任务发布 - 图20
2)点击“查看发布池”查看待发布的内容,并将“表DDL”资源拖动到“离线开发任务”之前,让其“发布顺序”显示为“1”。之后,点击“批量发布全部接收方”,即可在接收方平台的流程协作与通知中心创建类型为“资源发布”的工单。
离线开发任务发布 - 图21

注意:发布池中,可以看到所有的待接收资源的接收方,每个接收方中,可调整资源的发布顺序。在当前案例下,需要将“表DDL”资源放在“离线开发任务”之前,否则最终发布的工单审批时,会提示表结构不一致,而导致离线开发任务无法发布成功。
3)完成上一步之后,会有邮件通知,提醒进行工单审批,同时接收方平台通知中心也会提示对应的审批提醒。在发布中心的发布记录,也会显示发布记录,可展示查看发布的具体资源信息。
离线开发任务发布 - 图22

步骤六:接收方审批“资源发布”工单

1)在“待我处理”中,找到自己申请的工单,查看工单详情,在“申请信息”中,可查看发布的资源内容。
离线开发任务发布 - 图23
2)如下图所示为具体此次发布的资源详情。返回到工单详情,可进行工单审批。点击“同意”后,系统会自动进行相关资源在接收方的创建工作。如有异常,会有邮件等通知。
离线开发任务发布 - 图24
3)对于审批人需要前往“我已处理”,查看实际的工单处理结果。
离线开发任务发布 - 图25
4)工单结果为已完成,则可以前往“离线开发”,查看接收到的任务。
离线开发任务发布 - 图26
在数据地图上查找自己的表,显示已存在。
离线开发任务发布 - 图27

配置映射信息

在上述过程中,进行了上游依赖设置,细心的用户会发现发布方的被依赖任务“ods_user_info_byxx_p”在接收方被替换为“ods_user_info_india_byxx_p”。
该功能的实现主要是使用在发布配置中的配置映射信息功能,在此处支持维护映射信息,包括参数组、资源组、数据源和任务依赖映射。
离线开发任务发布 - 图28