【SparkCore】搜狗&百度日志分析
搜狗日志分析
数据格式
1 | 搜索时间 用户ID [查询词] 该URL在返回结果中的排名 用户点击的顺序号 用户点击的URL |
需求分析
- 首先要做的是数据的清洗和转换
- 过滤掉无效的数据
- 无效的数据是读取的数据的长度小于6就排除(通过filter算子实现)
- 筛选出有用的字段
- 筛选出的字段方便我们后续的分析
需求1:
- 统计热门搜索词Top10【出现次数最多前10个==搜索词==】
- 预期结果:(搜索词,出现次数)
- 实现思路:
- 1, 读取数据, 数据清洗
- 2, 将搜索内容通过分词器分解(每个词作为一个独立的单元)
- 3, 对每一个词作标记,出现一次
- 4, 通过reduceByKey算子计算每个词出现的次数
需求2
- 统计所有用户所有搜索中最大搜索次数、最小搜索次数、平均搜索次数
- 预期结果:最大搜索次数、最小搜索次数、平均搜索次数
- 实现思路:
- 1, 读取数据, 数据清洗
- 2, 构建(userid, 查询词设为1)kv键值对格式的数据
- 3, 进行reduceByKey聚合操作,得到每个用户的总的搜索次数
- 4, 比较所有用户, 求出最大搜索次数、最小搜索次数、平均搜索次数
需求3
- ==统计一天每小时搜索量==并按照搜索量降序排序【统计每个小时数据量,按照数据量降序排序】
- 预期结果:(小时,搜索量),最多24行
- 实现思路:
- 1, 读取数据, 数据清洗
- 2, 构建KV类型的数据(hour, 1)
- 3, 分组聚合
- 4, 降序显示
Jieba中文分词器
什么是Jieba
jieba分词器是目前最好的 Python 中文分词
组件
,社区非常活跃,功能丰富,支持关键词提取、词性标注等。既然Jieba是个组件, 那必然是通过pip的方式下载.
安装方式
取决于你的解析器(interpreter)的位置.但最终应该离不开Anaconda这个工具包,所以要先切换虚拟环境.
1 | conda activate base |
使用方式
模式
全模式:将句子中所有可以组成词的词语都扫描出来, 速度非常快,但可能会出现歧义
1
jieba.cut("语句", cut_all=True)
精确模式:将句子最精确地按照语义切开,适合文本分析,提取语义中存在的每个词
1
jieba.cut("语句", cut_all=False)
搜索引擎模式:在精确模式的基础上,对长词再次切分,适合用于搜索引擎分词
1
jieba.cut_for_search("语句")
Demo
1 | line = 'PySpark交互式编程' |
DemoCode
1 | from pyspark import SparkContext, SparkConf |
百度日志分析
字段分析
1 | 编号、时间、用户id,搜索关键字、用户点击的结果在搜索结果的排名,用户的点击次数、用户访问的网络地址 |
需求分析
(1) 读入百度搜索词文件文档,生成RDD
(2) 统计百度最热Top10搜索词及每个词的搜索次数,并降序排序
(3) 统计‘小说’关键词在每天各个时段的搜索次数,并降序排序
(4) 统计 用户点击的结果在搜索结果的排名 中排名在 1 到 10 的被点击的占比
1 10%
2 25%
3 40%
…..(5) 统计最热门Top10网站的搜索用户数,并降序排序
www.jd.com 1000
www.qqq.com 800
CodeDemo
1 | from pyspark import SparkContext, SparkConf |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.