新零售项目总结01
背景
随着经济和技术的发展,经历了多种不同形式的发展:
-
地摊、卖货郎
-
百货商店
-
超级市场
-
连锁商店
-
电子商务
-
新零售:线上服务、线下体验以及现代物流进行深度融合的零售新模式
意义
1:企业在早期发展阶段,主要面对的是公司的存活问题和日常正常经营问题,对大数据分析的需求比较弱
2:当企业发展到一定阶段,则需要使用新的大数据分析平台对公司的历史数据进行统一的整合分析,从这些数据中发掘有价值的东西,为企业的未来提供科学的支撑,为决策者提供科学的决策支持
3:本项目基于新零售的大数据分析,通过分析可以提高履单效率、减少运营成本、提高客户体验度,实现库存优化和增加营收的目标
项目架构
数据流向
从MySQL到数仓(ODS):sqoop
建表(ORC + ZLIB)样例:
原因:ORC + ZLIB适合用于存储,ODS层一般是从OLTP数据库中直接取出存入,查询场景不大
DROP TABLE if exists yp_ods.t_user_login;
CREATE TABLE if not exists yp_ods.t_user_login(
id string,
login_user string,
login_type string COMMENT '登录类型(登陆时使用)',
client_id string COMMENT '推送标示id(登录、第三方登录、注册、支付回调、给用户推送消息时使用)',
login_time string,
login_ip string,
logout_time string
)
COMMENT '用户登录记录表'
partitioned by (dt string)
row format delimited fields terminated by '\t'
stored as orc tblproperties ('orc.compress' = 'ZLIB');
第一次导入样例(全量):
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect 'jdbc:mysql://host:3306/yourdatabase?enabledTLSProtocols=TLSv1.2&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true' \
--username root \
--password 123456 \
--query "select * from target_table where 1=1 and \$CONDITIONS" \
--hcatalog-database yp_ods \
--hcatalog-table t_district \
-m 1
增量导入样例(按天统计):
TD_DATE=`date -d '1 days ago' "+%Y-%m-%d"`
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect 'jdbc:mysql://host:3306/yipin?enabledTLSProtocols=TLSv1.2&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true' \
--username root \
--password 123456 \
--query "select *, '${TD_DATE}' as dt from target_table where 1=1 and (create_time between '${TD_DATE} 00:00:00' and '${TD_DATE} 23:59:59') and \$CONDITIONS" \
--hcatalog-database yp_ods \
--hcatalog-table t_goods_evaluation \
-m 1
数仓:ODS层到DWD层
DW、DM层建表(ORC + SNAPPY):
主要考虑到查询操作会比较多
DWD层作用
- 区分维度表和事实表
事实表:描述的一种客观事实行为
维度表:分析的事物的角度 - 构建拉链表
如果你想保留历史的状态记录,则可以使用拉链表
缓慢变化维
拉链导入
- 适合场景:增量及更新同步表
- 表设计要求:start_date开始时间、end_date结束时间
- start_date 表示数据有效的开始时间 可以作为表的分区字段来使用
- end_date 表示数据失效的时间,默认数据都是9999-99-99 表示一直有效 。当有更新的时候,通过拉链表操作修改end_date