一、数据计算步骤汇总
下面我们通过文字梳理一下具体的数据计算步骤。
第一步:历史粉丝关注数据初始化
第二步:实时维护粉丝关注数据
第三步:每天定时更新主播等级
第四步:每天定时更新用户活跃时间
第五步:每周一计算最近一月主播视频评级
第六步:每周一计算最近一周内主播主播的三度关系列表。
第七步:三度关系列表数据导出到MySQL
二、三度关系列表数据导出到MySQL
1、分析
接下来我们需要使用Sqoop将HDFS中计算好的三度关系推荐列表数据导出到MySQL中
需要在mysql中创建一个表recommend_list
这个表有两列:
第一列为主播uid
第二列为待推荐主播uid
当用户关注某个主播的时候,会根据这个主播的uid到这个表里面进行查询,把待推荐主播uid获取到,在页面中进行展现,推荐给用户,这样就都可以实现三度关系推荐的效果了。
2、建表
建表语句如下:
recommend_list.sql
drop table if exists recommend_list;
create table recommend_list(
uid varchar(255) NOT NULL,
recommend_uids varchar(500) NOT NULL,
primary key (uid)
)
接下来使用sqoop将hdfs中的输出导出到mysql中
在导出的时候实现插入和更新功能,如果uid对应的数据已存在,则更新,如果不存在则插入
3、开发脚本
开发一个脚本
export_recommend_list.sh
#默认获取上周一的时间
dt=`date -d "7 days ago" +"%Y%m%d"`
if [ "x$1" != "x" ]
then
dt=`date -d "7 days ago $1" +"%Y%m%d"`
fi
sqoop export \
--connect jdbc:mysql://192.168.182.1:3306/video?serverTimezone=UTC \
--username root \
--password admin \
--table recommend_list \
--export-dir hdfs://bigdata01:9000/data/recommend_data/${dt} \
--input-fields-terminated-by '\t' \
--update-key uid \
--update-mode allowinsert
4、执行脚本
执行数据导出脚本
[root@bigdata04 jobs]# sh -x export_recommend_list.sh 20260201
5、查看结果
查看表recommend_list中的结果
1000 1004
1004 1000
1005 1000
其实在实际工作中我们需要做的到这就可以了,然后把这个数据库的名称、表名、表中的字段含义写一个文档同步给服务端即可,具体的数据交互是由服务端和客户端进行对接的。