【数仓项目】合抱之木,生于毫末-hive&tez&数据分层

写在前面

至此篇,项目的数据采集阶段便告一段落,开始使用hive对生成的原始数据进行处理,本篇会介绍有关hive,tez,数据分层过程中需要注意的一些点,不再介绍一些csdn,官网遍地都是的如何安装


hive&tez

众所周知,hive因为一些复杂计算会走mr导致执行一些查询语句很缓慢,但是没办法,hive作用于集群加上其优秀的自带函数设计包括自定义函数,大大的方便了集群数据使用者,所以仍然是不可替代的。
当然,慢的话可以想办法去调优,比如开本地模式,fetch,钞能力等等,但这不是本篇文章讨论的内容。
于初次搭建集群不同,我们采用tez来优化hive。
tez的计算走的是计算机内存会大大的提升hive的查询能力,甚至还支持各种压缩格式,非常实用。其速度在笔者亲身体验看来有点类似于tensorflow处理数据集的机制(不知道对不对,只是直观感受)。当你在查询一个单一的hql语句时,他可能会运行一段时间但仍然会比自带的mr快,但是若是一下运行10多个sql,它会有一个”热身”的过程,前面的几个可能速度一般,但是到了后面会越来越快。至少mr做不到insert插入一个表的数据只需两秒(渣电脑开个mr卡的时候都能两分钟,枯了)。所以在从零开始建立一个训练用数仓时(需要建一堆表),tez非常好用!

数据分层

之前flume-kafka-flume-hdfs生成的数据能直接用于实际中吗?当然不能!
这就像python做一些数据挖掘,光给你一个参差不齐的数据,不经处理当然是不能用的吧
所以这时候我们需要将数据分层,

本项目中分将数据分为如下四层

ODS:原始数据层,存放原始数据,直接加载原始日志,数据,数据保持原貌不做处理

dwd层:明细数据层,结构和粒度与原始表保持一致,对ods层数据进行清洗(去除空值,脏数据,超过极限范围的数据)

DWS层:以DWD为基础,进行轻度汇总

ADS层:为各种统计报表提供数据

为什么要分层

1.复杂问题简单化
将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤
比较简单,并且比较方便定位问题

2.减少重复开发
规范数据分层,通过中间层数据能够减少极大的重复计算,增加一次记算结果的复用性

3.隔离原始数据
不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开

数据集市是一种微型的数据仓库,有更少的数据更少的主题区域以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务

数据仓库是企业级的,能为整个企业各个部门运行提供决策手段

数仓命名规范

Ø ODS层命名为ods
Ø DWD层命名为dwd
Ø DWS层命名为dws
Ø ADS层命名为ads
Ø 临时表数据库命名为xxx_tmp
Ø 备份数据数据库命名为xxx_bak

×

纯属好玩

扫码支持
谢谢你

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 写在前面
    1. 1.1. hive&tez
    2. 1.2. 数据分层
      1. 1.2.1. 本项目中分将数据分为如下四层
      2. 1.2.2. 为什么要分层
      3. 1.2.3. 数仓命名规范
,