离线数仓的ODS层(原始数据层)基于Hive on Spark的搭建
1.预先将原始数据(页面埋点的Json数据)采集到HDFS上
2.配置Hive on Spark
(1) 在Hive所在节点部署Spark
(2) 在hive中创建spark配置文件
(3) 向HDFS上传Spark纯净版jar包
(4) 修改hive-site.xml文件
3.配置yarn
4.使用工具连接hive,在Hive中创建ODS层
(1)用户行为数据
创建lzo压缩分区表
drop table if exists ods_log ;
create external table ods_log(`line` String)
row format delimited fields terminated by '\t'
STORED AS INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
再将HDFS上的用户行为数据的lzo文件导入表中即可生成ODS层的用户行为数据。
(2)业务数据
创建活动信息表
例:
--用户表
DROP TABLE IF EXISTS ods_user_info;
CREATE EXTERNAL TABLE ods_user_info(
`id` STRING COMMENT '用户id',
`login_name` STRING COMMENT '用户名称',
`nick_name` STRING COMMENT '用户昵称',
`name` STRING COMMENT '用户姓名',
`phone_num` STRING COMMENT '手机号码',
`email` STRING COMMENT '邮箱',
`user_level` STRING COMMENT '用户等级',
`birthday` STRING COMMENT '生日',
`gender` STRING COMMENT '性别',
`create_time` STRING COMMENT '创建时间',
`operate_time` STRING COMMENT '操作时间'
) COMMENT '用户表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS
INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/warehouse/gmall/ods/ods_user_info/';
导入数据:
搭建数仓第一次导入数据时采用全量导入
后面每天按照表的设计同步策略进行每日同步(封装成shell脚本)