- 增量导入形式
2.3 用户行为收集到HIVE
2.3.1 为什么要收集用户点击行为日志
- 便于了解分析用户的行为、喜好变化
- 为用户建立画像提供依据
2.3.2 用户日志如何收集
2.3.2.1 埋点开发测试流程
- 埋点参数:
- 就是在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑
- 1、PM(项目经理)、算法推荐工程师一起指定埋点需求文档
- 2、后端、客户端 APP集成
- 3、推荐人员基于文档埋点测试与梳理
2.3.2.2 黑马头条文章推荐埋点需求整理
- 埋点事件号:
- 停留时间
-
- read
- 点击事件
-
- click
- 曝光事件(相当于刷新一次请求推荐新文章)
-
- exposure
- 收藏事件
-
- collect
- 分享事件
-
- share
- 埋点参数文件结构
- 曝光的参数:下拉刷新,推荐新的若干篇文章
- 我们将埋点参数设计成一个固定格式的json字符串
2.3.3 离线部分-用户日志收集
通过flume将业务数据服务器A的日志收集到hadoop服务器hdfs的hive中
-
创建HIVE对应日志收集表
- HIVE数据库的设置,分区?
- 手动关联分区的hadoop的目录
- 收集到新的数据库中
-
a1.sources.s1.interceptors.i1.regex=\{.*\}
-
flume收集日志配置
sink:
- 开启收集命令
2.3.3 Supervisor进程管理
很方便的监听、启动、停止、重启一个或多个进程
- 使用
- 1、配置 supervisor开启配置文件在哪里
- /etc/supervisor/
- 2、配置.conf ,reco.conf
- 3、写入配置格式
- 4、开启supervisor, 启动
supervisord -c /etc/supervisord.conf - 5、supervisorctl管理进程
- 1、配置 supervisor开启配置文件在哪里
2.3.4 supervisor 启动监听flume收集日志程序
-
1、添加配置
[program:collect-click]
command=/bin/bash /root/toutiao_project/scripts/collect_click.sh
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/root/logs/collect.log
loglevel=info
stopsignal=KILL
stopasgroup=true
killasgroup=true -
-
2、update更新我们要监控管理的程序
2.3.6 总结
- 用户行为日志收集的相关工作流程
- flume收集到hive配置
- supervisor进程管理工具使用
2.1 离线画像业务介绍
文章内容标签化:内容标签化,根据内容定性的制定一系列标签,这些标签可以是描述性标签。针对于文章就是文章相关的内容词语。
- 文章:频道ID内容,关键词、主题词
用户画像:研究用户对内容的喜好程度
2.4 离线文章画像计算
离线文章画像组成需求
-
文章画像,就是给每篇文章定义一些词。
-
关键词:文章中一些词的权重(TFIDF与texrank)高的。
-
主题词:是进行规范化处理的,文章中出现的同义词,计算结果出现次数高的词。
- 共性的词
1、原始文章表数据合并得到文章所有的词语句信息
- 文章标题+文章频道名称+文章内容组成文章完整内容
2.4.1 原始文章数据的合并
- 初始化spark信息配置,定义一个积基类
2.4.1.1 创建Spark初始化相关配置
-
合并三张表内容,到一张表当中,写入到HIVE中
- article数据库:存放文章计算结果
- article_data
-
建议初始化spark , SparkSessionBase
jupyter notebook先把代码写好,测试好
2.4.1.2 进行合并计算
3、新建merge_data.ipynb文件
- 初始化spark信息
- 读取文章进行处理合并
- DF 进行注册一个表,temp合并文章频道名称
2.4.2 Tfidf计算
article_data
2.4.2.1 目的
-
计算出每篇文章的词语的TFIDF结果用于抽取画像
-
结果:计算得出N篇文章的TFIDF值,IDF索引结果合并得到词
- 最终表:
-
hive> select * from tfidf_keywords_values where article_id=3;
OK
3 17 var 22.4813
3 17 &# 41.1171
3 17 对象 14.0423
3 17 节点 56.4314
3 17 中文 7.0541
3 17 stringify 22.5552
2、所有历史文章Tfidf计算
2.4.2.2TFIDF模型的训练步骤
-
读取N篇文章数据
-
文章数据进行分词处理,得到分词结果
- 分词用的词库,三台都需要上传
-
先计算分词之后的每篇文章的词频,得到CV模型
-
然后根据词频计算IDF以及词,得到IDF模型
- 训练idf模型,保存
- cv * log(C1出现文章次数/总文章数量)
- 不同词列表,所有的词的IDF的值
-
利用模型计算N篇文章数据的TFIDF值
- tfidf_keywords_values:结果结果
- 用到idf_keywords_values这个表: 词以索引的对应关系
- 对于每篇文章的每个词的权重做排序筛选
- tfidf_keywords_values:结果结果
3、所有历史文章TextRank计算
- 定义:通过词之间的相邻关系构建网络,然后用PageRank迭代计算每个节点的rank值,排序rank值即可得到关键词
- 词之间的相邻关系构建网络
- PageRank迭代计算每个节点的rank值(每个词,网页
- 利用图模型来提取文章中的关键词
举例:10篇文章
- 1、分词过滤
- 2、图建立,K窗口
- 3、计算权重排序
-
程序员=1.9249977,
人员=1.6290349,
分为=1.4027836,
程序=1.4025855,
高级=0.9747374,
软件=0.93525416,
中国=0.93414587,
特别=0.93352026,
维护=0.9321688,
专业=0.9321688,
系统=0.885048,
编码=0.82671607,
界限=0.82206935,
开发=0.82074183,
分析员=0.77101076,
项目=0.77101076,
英文=0.7098714,
设计=0.6992446,
经理=0.64640945
![img](https://img-blog.csdnimg.cn/img_convert/17e69a2d046531f37534f3ef5da55be0.png)
![img](https://img-blog.csdnimg.cn/img_convert/5188c92a55d98cca4eb517a33ac32dae.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
图片转存中...(img-AwMaHBGV-1714646283271)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**