数栖平台ETL作业配置手顺

208 篇文章 8 订阅
24 篇文章 1 订阅

报错问题集:

数栖数据中台ETL报错问题集_hzp666的博客-CSDN博客

############################

新建数据源

1.左上角 菜单 --> 菜单右下角 --> 返回控制台

2.控制台 --> 右上角 --> 组织管理 --> 左侧数据源管理 --> 左上角 添加数据源  -->  添加后 把该数据源 授权给 对应项目

ps: 注意 数据源的时区添加 

jdbc:mysql://*********:3306/middle_base?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull

3. 配置项目环境中的 数据源及 映射码

在项目管理中  点击“”配置“”

项目中有2个 环境,一个开发环境 ,一个生产环境, 

要把 在开发环境的数据源 和 生产环境中的数据源, 配置为对应的 “映射码”,让两个环境的数据源有个对应关系。

这样保证 在开发环境中 数据源 抽取的是 开发数据库, 而在 生产环境中 抽取的是 生产数据库。

即:在生产环境中,ETL作业会 自动把 开发数据库  替换为 生产数据库。

(用来解决 一般测试/开发环境是连接的测试数据库, 而生产环境是 连接的生产数据库)

然后,先点击 开发环境选框(不是进入数据开发)  --> 数据源

然后找到 新增的数据源 , 点击该数据源,对应的  “设置映射码”  --> 起个名称 eg:  env_xyERP

  

然后,选中 生产环境选框(不是进入数据开发)  --> 数据源

找到 新增的 数据源, 设置其 “映射码”

###########################

ETL流程:

1.新建分层文件夹, 

缓冲层TDS

贴源层ODS

应用层ADS


2.
数据缓冲层TDS 

2.1ddl层 :hive 建表,分区表

 选择 建表作业 --hive


drop table if exists APP_ALL_PROJ_NUM_FACT;
create table if not exists APP_ALL_PROJ_NUM_FACT (
    Id               bigint       comment '自增主键'
   ,ProjCode         string       comment '项目长编码'
   ,ProjName         string       comment '项目长名称'
   ,BUGUID           string       comment '所属公司GUID'
   ,BUName           string       comment '所属公司简称'
   ,OwnProjNum       bigint       comment '自助操盘项目数'
   ,ShareProjNum     bigint       comment '联合操盘项目数'
   ,UpdateTime       timestamp    comment '更新时间'
) comment '总览项目数'
partitioned by (
    ds string comment '分区字段'
) stored as parquet;

运行SQL


2.2job层:原业务库数据同步至hive

 选择 数据同步

 选数据源 

 选目标库:hive

下一步,匹配字段:

 配置线程数(默认值即可)

 下一步 确认完成。

具体操作步骤:

ETL至 hive

    选源头表 -数据源:
              同步类型:
              表/视图:
              where:有就写
              
    目标表   -数据源:
            -表:
            分区信息:ds = ${bizDate} / ds=${cyctime} / ds=${bizmonth}
            清理规则:写入前情况分区
    
    字段匹配: 按名称匹配/  手动匹配
    
    完成

3.数据贴源层ODS

3.1ddl层: hive建表,ODS层建表

选择 新建作业--> hive建表

 建表SQL:

create table if not exists ODS_APP_ALL_HZ_GOAL_FACT (
    Id               bigint          comment '自增主键'
   ,ProjCode         string          comment '项目长编码'
   ,ProjName         string          comment '项目长名称'
   ,BUGUID           string          comment '所属公司GUID'
   ,BUName           string          comment '所属公司简称'
   ,ProjShortName    string          comment '城市简称'
   ,DataYear         bigint          comment '数据年份'
   ,TagetAmount      decimal(30,4)   comment '目标供货'
   ,ActualAmount     decimal(30,4)   comment '实际供货'
   ,ParentCode       string          comment '父级项目代码'
   ,UpdateTime       timestamp        comment '更新时间'
) comment '总览供货目标达成'
partitioned by (
    ds string comment '分区字段'
) stored as parquet;

3.2 job层: 对TDS层的字段数据类型做转换

新建 数据作业

 作业类型选择: hive

脚本编写: (主要修改 hive中string 为decimal类型)

insert overwrite table ODS_APP_ALL_HZ_GOAL_FACT partition(ds='${bizDate}')
select
      Id            
     ,ProjCode      
     ,ProjName      
     ,BUGUID        
     ,BUName        
     ,ProjShortName 
     ,DataYear      
     ,cast(TagetAmount as decimal(30,4)) as TagetAmount   
     ,cast(ActualAmount as decimal(30,4)) as ActualAmount   
     ,ParentCode    
     ,UpdateTime    
from TDS_APP_ALL_HZ_GOAL_FACT where ds = '${bizDate}';



    


4.数据应用层ADS,

新建离线作业

作业类型选择   数据同步

确定

数据源选择  hive   的  ODS层表

目标表

选: 数据中台 mysql 

presql: truncat table 对应的表

下一步,字段匹配,按名称

 直接下一步,确定

hive表同步到 业务库

源头表信息
            数据源
            表
            分区信息: 为空则同步全部分区数据,  可指定分区 ds = ${bizDate} / ds=${cyctime} / ds=${bizmonth}

目的表信息
            
            数据源
            表
            主键冲突策略
            PreSql:  向目标表灌入数据前,执行的SQL
            PostSql: 向目标表灌入数据后,执行的SQL
        
        ps: hive分区表 向业务库灌入数据,有两种方式,  
        第一种:在源头表信息设置 分区信息为空,  然后在目的表中 设置presql为 truncate table 表名,即全删全插
        第二种:在源头表信息设置 分区信息为 ds = ${bizDate} / ds=${cyctime} / ds=${bizmonth}, 然后在目的表中 设置presql为
                                                                                    delete from 表名
                                                                                    where date > 开始时间
                                                                                    and date < 结束时间
                                                    
        
        
      

 
5.设置定时任务

5.0初始化(一个项目只用设置一次)

可以新增一个离线作业,任务类型选择 :shell 作为整个作业的开关

代码:

starttime=$(date +%Y-%m-%d\ %H:%M:%S)
echo $starttime

调度配置

5.1.根节点的任务:(即TDS层中的 job作业上级都是 5.0步骤中新建的total_start,每一项都要配置)

在右侧 调度配置中  调度时间模块:主要设置下 生效时间、调度周期 、    调度时间

                                    调度依赖模块中: 点击一键添加根节点


2.非根节点的任务:在右侧 调度配置中  调度时间模块:主要设置下 生效时间、调度周期 、    调度时间

                                    调度依赖模块中: 上游作业 选择上个任务流

eg: ODS层的上级作业 是TDS


        
        
6.把所有的job作业 提交发布,  

7.在发布中心,找到 所有本次开发的job,添加到包发布

发布中心界面

然后到发布包列表,找到 刚提交的 发布包, 点击 “同意”, 即可看到 发布成功

8.到运维中心中 查看

查看DAG图

 完工

ps:如果 发布包 报错 XXX数据源在下级环境未配置映射

设置项目的 环境变量 -->  数据源  -->  开发环境和 生产环境的数据源 映射码,详见 文章开头,配置映射码
        

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值