数仓分层 数据库仓库实战

本文介绍了数仓分层的概念,详细阐述了ODS和DWD层的搭建过程,包括ODS层的数据加载和DWD层的数据解析与清洗,涉及到Hive的表创建、数据分区、UDF和UDTF函数的应用,以及具体的DWD层表的构建。
摘要由CSDN通过智能技术生成

 

 

 

 


回到顶部

数仓分层

ODS:Operation Data Store
原始数据

DWD(数据清洗/DWI) data warehouse detail
数据明细详情,去除空值,脏数据,超过极限范围的
明细解析
具体表

DWS(宽表-用户行为,轻度聚合) data warehouse service ----->有多少个宽表?多少个字段
服务层--留存-转化-GMV-复购率-日活
点赞、评论、收藏;
轻度聚合对DWD

ADS(APP/DAL/DF)-出报表结果 Application Data Store
做分析处理同步到RDS数据库里边

数据集市:狭义ADS层; 广义上指DWD DWS ADS 从hadoop同步到RDS的数据

回到顶部

数仓搭建之ODS & DWD

1)创建gmall数据库

hive (default)> create database gmall;

说明:如果数据库存在且有数据,需要强制删除时执行:drop database gmall cascade;

2)使用gmall数据库

hive (default)> use gmall;

1. ODS层

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

① 创建启动日志表ods_start_log

1)创建输入数据是lzo输出是text,支持json解析的分区表

复制代码

hive (gmall)> 
drop table if exists ods_start_log;
CREATE EXTERNAL TABLE ods_start_log (`line` string)
PARTITIONED BY (`dt` string)
STORED AS
INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/warehouse/gmall/ods/ods_start_log';

复制代码

Hive的LZO压缩:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LZO

加载数据;

时间格式都配置成YYYY-MM-DD格式,这是Hive默认支持的时间格式

hive (gmall)> load data inpath '/origin_data/gmall/log/topic_start/2019-02-10' into table gmall.ods_start_log partition(dt="2019-02-10");
hive (gmall)> select * from ods_start_log limit 2;

② 创建事件日志表ods_event_log

创建输入数据是lzo输出是text,支持json解析的分区表

复制代码

drop table if exists ods_event_log;
create external table ods_event_log
(`line` string) 
partitioned by (`dt` string)
stored as
INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location '/warehouse/gmall/ods/ods_event_log';

hive (gmall)> load data inpath '/origin_data/gmall/log/topic_event/2019-02-10' into table gmall.ods_event_log partition(dt="2019-02-10");

复制代码

ODS层加载数据的脚本

1)在hadoop101的/home/kris/bin目录下创建脚本

[kris@hadoop101 bin]$ vim ods_log.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数仓分层是为了有效地组织和管理数据,提高数据仓库系统的性能和可维护性。以下是数仓分层的一些原因: 1. 数据整合和清洗:数据仓库通常需要从多个不同的数据源中获取数据,而这些数据源可能具有不同的数据格式和结构。通过将数据仓库分成不同层级,可以更好地对数据进行整合和清洗,以确保数据的一致性和准确性。 2. 数据存储和访问的效率:数据仓库中通常包含大量的数据,因此需要有效的存储和访问方式。通过将数据仓库按照不同层级进行划分,可以根据数据的访问频率和重要性将数据存储在不同的存储介质中,以提高数据的读写效率。 3. 数据安全和权限控制:数据仓库中包含的数据可能是敏感的,需要进行严格的权限控制。通过将数据仓库分层,可以将不同层级的数据进行不同程度的保护和权限设置,从而确保只有合适的人员能够访问和操作数据。 4. 数据分析和报告:数据仓库通常用于支持数据分析和生成报告的目的。通过将数据按照不同层级进行划分,可以更好地满足不同用户的需求,从而提高数据分析和报告的效率和准确性。 5. 系统维护和开发的可管理性:数据仓库是一个复杂的系统,需要进行定期的维护和开发工作。通过将数据仓库按照不同层级进行划分,可以更好地组织和管理系统的不同模块,从而提高系统的可维护性和可管理性。 综上所述,数仓分层是为了更好地组织和管理数据,并提高数据仓库系统的性能、安全性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值