dataworks

1 数据集成

数据同步,抽数,导数
离线数仓,离线同步

1.数据源
从哪里来,到哪里去
可以是数据库,也可以是别的,比如FTP,ES等

2.表
来源表 目标表

3.字段映射关系

4.同步方式/同步逻辑
比如从mysql到hive

先清空hive表的某些分区,再插入,全删全插

直接插入

hive到mysql呢?

全删全插

直接插入

主键冲突update

hive到mysql,我们公司称为“回流”

同步方法

1.直接对mysql业务库进行操作

优缺点:操作简单,风险较大

2.写到kafka,让java后端去消费

kafka,消息中间件

hive->kafka->mysql

中间多了一层,我们离线数仓称为生产者,java后端称为消费者

特点:较为安全,但是开发麻烦

3.api接口

产生统一的api接口,供java同事去调用,我认为是最好的方式

dataworks也有该功能

api接口一般是,一行数据,一个json

如果你不用呢?

我们离线数仓还是将数据写到mysql,但是是接口端的mysql

hive->mysql(接口库) ->接口->mysql(业务库)

5.同步时间,多久同步一次
crontab

2 数据开发
说白了 写SQL

但是不只是写SQL

调度配置

时间配置,什么时候运行?多久运行一次?

生效时间范围:2022-04-15-2022-04-30

SLA:其实就是设置任务超时时间,比如设置1小时,也可以设置具体的时间,时效性

依赖设置:哪些任务跑完了我才可以跑

重跑设置:是否出错自动重跑?重跑几次?是否可以手动重跑?

其他:

代码提醒:写一个表,dwd_trd_ord,表提醒补全,原理是?

血缘关系:一大段SQL,平台最好是可以将其中所有表的依赖解析出来

版本:谁编辑过了?编辑了几次?为什么编辑?还要可以回滚。

代码搜索:

默认的变量:比如"昨天",“月初第一天”

3 运维中心
周期任务

DAG(有向无环图)

任务

启动

停止

暂停(冻结)

解冻

补数据

1.20220101-20220409的数据,hive加了个字段

2.当做测试用 补20220409的数据

3.失败发现后重跑

4 数据治理
数据访问控制

比如分析师想看你做好的某个ods层表,她申请,你审批

数据质量(很重要!!!)

有些我们任务跑成功了,但是数据不对,下游分析师或者业务发现了比如某app的弹窗,里面放的是优惠券的链接,这部分数据是你做的

user_id coupon_id amt

但是本来只发1万人,但是你发了10万人,造成资损

主要的数据质量校验的规则

1.主键重复检测

hiving count(distinct id) > 1

2.数据量多也不行,少也不行,没有更不行

2.1 是否为空 count(1)是否大于0

2.2 表数据量波动阈值 1万 50%报错

n天平均值波动,方差波动,周期波动等等

3.某些重要计算列检测

比如一个0.67 0-1,1.7,设置该列最大值为1,出现大于1的报错

5 数据地图
包含了表,字段,分区,数据量,上下游依赖等等信息

存储量和表数据的关系

1G不等于100w

你可能感兴趣的:(hive)