我们公司使用的项目是一个大数据运营系统,主要类型是一些电商平台的运营系统,我主要是负责项目架构的总体设计和技术调研, 数据处理分析代码开发,需求沟通,集群搭建,平台集群监控以及数据平台的相关调优等
我在公司主要做etl开发,dwd层到dws层开发业务的,我在里面主要是做数据平台开发,项目的整体大概是这样的
1.1日志采集和业务数据抽取
项目在pc端和app端进行埋点采集日志,埋点数据按主题生产到kafka 的topic里面,项目当时日志采集用的是flume消费kafka(kafka的ack参数设置-1/all,保证数据入库)的形式抽取日志到存储平台hdfs,参与了同事的日志采集,主要用的是kafka source和flie channle ,hdfs sink
以hive创建一个数据仓库
业务数据主要从mysql 以sqoop抽取到数仓,主要使用sqoop的导入hive表和增量导入表数据
1.2技术选型
数据采集 flume
存储平台 hdfs
基础设施 hive
运算引擎 spark sql
资源调度 yarn
任务调度 Azkaban
元数据管理 atlas
1.3分层设计
分层原因
数据仓库中的数据表,往往是按分层计算和分层管理;
所谓分层,具体来说,就是将大量的数据表按照一定的规则和定义来进行逻辑的划分;
ODS 操作(最原始数据)数据层 对应的是那些etl到数仓体系的表
DWD 数据明细层 一般是对ods层etl后的扁平化数据
DWS 数据聚合层 主要是dwd层的一些轻聚合的表
ADS 数据服务层 主要是对dws 层的一个具体的结果表的展现
DIM 维度层 一些维度集成的表
分层的意义 : 数据管理更清晰,运算复用率更高, 需求开发会变得更便捷
1.3.1ODS 操作数据层
数据内容: 存放flume采集过来的原始日志解析成报表形式
存储方式: parquet 或orc
存放时间: 3个月
模型设计
与采集的原始日志保持一致
1.3.2DWD 数据明细层
数据内容: 存放的是经过ods ETL处理后的扁平化的数据
存储方式: parquet和orc
存放时间: 6个月
模型设计:
根据主题分析
流量域
页面信息 app_event_detail web_event_detail 事实明细表
维度信息 page_info 页面信息page_type 页面类型
业务域
订单明细表 oms_order_info 商品明细表 oms_order_itme 优惠劵明细表 coupon_info
还有一些宽表 oms_order_item_coupon_info 订单商品宽表等
1.3.3DWS数据聚合层
数据内容: 存放的是对dwd层的一些轻聚合表
存放方式: parquet和orc
存放时间: 1年
模型设计
根据主题分析
流量域 根据主题划分 页面日新日活,交互事件, 用户活跃,用户留存 , 优惠劵 ,广告运营位,站外投放 ,漏斗分析
日活日新聚合表, 交互事件聚合表, 用户活跃聚合表, 用户留存聚合表 优惠劵使用信息聚合表, 广告运营位分析聚合表,站外投放分析聚合表, 漏斗分析聚合表
业务域 根据主题划分 交易域 营销域 运营活动域
交易域
购物车分析 (多维度分析 人群 品类 品牌)
七日加购总数
七日取消总数
订单金额(成交总额)分析轻聚合表 (多维度分析 地域 品类 终端)
核心度量
当日gmv总金额
订单实付金额
订单优惠金额
优惠劵抵扣金额
积分抵扣金额
主要维度
时段
品类
品牌
地域
会员等级
订单类型(秒杀,团购)
订单来源
复购分析(多维度分析 品类 人群 终端 领域)
7日内各端复购率
7日内购买频次分析
订单实时分析
订单量小时段
订单量分钟段
订单用户走势分析
营销域
优惠券分析
优惠券抵扣力度(优惠券,日期,抵扣金额)
优惠券使用情况(优惠券,日期,使用次数)
团购分析
团购订单趋势
参团用户趋势
各品类开团数
各品类成团数
秒杀限时购分析
秒杀订阅人数
秒杀成交订单趋势
秒杀支付类型趋势
其他营销活动
国庆大豪礼
金秋大放送
活动地域趋势分析
活动订单趋势分析
运营活动域
广告运营位分析
曝光度
点击率
转化率
拉新注册分析
渠道分布
转化率
会员域
消费情况
充值情况
会员等级分布
1.3.4ADS 数据服务层
数据内容: 存放的是对一些具体的业务的固定报表
存放方式: parquet和orc
存放时间: 3年
将数据分为两个领域 业务域和流量域
流量域
1.1ODS 层开发
ODS操作数据层
主要作用: 对原始数据备份
将日志数据load到ods层日志表中,形成最原始的数据 , 以parquet或orc存储
创建外部表
由于原始数据是普通文本文件,而文件内容是json格式的一条一条记录
在创建hive表结构进行映射时,有两种选择:
- 将数据视为无结构的string
- 将数据按json格式进行映射(这需要外部工具包JsonSerde 的支持)
创建app_event_log wx_event_log web_event_log表
CREATE TABLE ods.app_event_log(
字段…….
)
PARTITIONED BY (dt string )
ROW FORMAT SERDE