作者:justnicetwo | 来源:互联网 | 2023-02-12 13:46
一、本项目用了哪些技术?
1、用sqoop将mysql的数据导入到hdfs中。
日志同步策略:
同步的意义:让数仓中的数据与业务表的数据保持一致。
1)全量同步
每日同步,就是每天存一份昨天完整的数据,将其存放在昨天的日期为分区名的分区表中。
适用于表数据量不大,且每天既有新数据插入,也有旧数据修改的场景。
如收藏表:
create table ods_favor_info(
id string, --id
user_id string, --用户id
is_cancel string, --是否取消
create_table string, --收藏时间
cancel_time string, --取消时间
)
partitioned by(dt string)
;
2)增量同步
每日增量,就是第一天存所有的存历史数据,然后每天存储一份昨天的增加数据。
使用于表数据量大且每天只会有新数据插入的场景。
如:评论表
create table ods.ods_comment_info(id string, --评论iduser_id string,--用户idlineid string,--线路idappraise string,--评论内容create_time string --评论时间
)
partitioned by(dt string)
;
3)新增及变化同步
昨天的新增及变化,就是存储时间和修改时间都是昨天的数据。适用于表的数据量比较大,并且每天既有新增,又有变化。
4)特殊情况
2、用flume将用户行为日志导入到hdfs中。
其中写了判断json串是否完整,解决零点漂移问题的拦截器。
数据:在app中搜索公交站、浏览、点击、收藏等,产生的用户行为日志。
用Nginx负载均衡,把数据均匀的发送到日志服务器中。
双层flume:第一层taildir Source kafka Channel第二层kafka channel hdfs sink