分享好友 最新动态首页 最新动态分类 切换频道
摸鱼大数据——Spark Core——RDD综合案例——搜狗搜索流
2024-12-25 12:28
2.1 数据源介绍

访问时间 用户id []里面是用户输入搜索内容 url结果排名 用户点击页面排序 用户点击URL

字段与字段之间的分隔符号为 和空格 (制表符号)

2.2 需求分析
需求一: 统计每个 关键词 出现了多少次,最终展示top10数据
    关键词示例: ['.','+','的',360', '安全卫士', '哄抢', '救灾物资', '75810', '部队' ...]
    注意:'.','+','的'都需要过滤 
​
需求二: 统计每个用户每个 搜索内容 点击的次数,最终展示top5数据
​
需求三: 统计每个分钟页面点击次数,最终展示top5数据(课后作业

2.3jieba分词器
说明:
发现在数据中,并没有直接的关键词,关键词数据是包含在搜索词中,而且一个搜索词中包含了多个关键词,所有如何想基于关键词进行统计, 首先需求先拆分搜索词,获取关键词,思考:如何做呢?
​
借助第三方的分词工具实现中文分词
    Java语言:IK分词器
    Python语言:jieba(结巴)分词器
​
如何使用jieba分词器呢?
1- 需要在系统中安装jieba分词库: local模式只需要安装在node1即可 如果集群模式运行 需要各个节点都要安装
    安装命令:  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba

安装成功的截图

测试

# 导包
import jieba
​
# main程序的入口
if __name__ == '__main__':
    # 精确模式
    r1 = list(jieba.cut('我要去黑马找斌哥学习大数据技术'))
    print(r1)
    # 全模式
    r2 = list(jieba.cut('我要去黑马找斌哥学习大数据技术',cut_all=True))
    print(r2)
    # 搜索引擎模式
    r3 = list(jieba.cut_for_search('我要去黑马找斌哥学习大数据技术'))
    print(r3)

2.4 代码实现
2.3.1 数据准备
  • 1- 将数据文件拷贝到data目录下:

  • 2- 数据清洗_分析

# 导包
import os
​
import jieba
from pyspark import SparkConf, SparkContext
​
# 绑定指定的python解释器
os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'
​
​
def get_topN_keyword(etlRDD, n):
    r1 = etlRDD.flatMap(lambda line_list: list(jieba.cut(line_list[2]))) 
        .filter(lambda word: word not in ('.', '+', '的')) 
        .map(lambda word: (word, 1)) 
        .reduceByKey(lambda agg, curr: agg + curr) 
        .top(n, lambda t: t[1])
    print(r1)
​
​
def get_topN_search(etlRDD,n):
    r2 = etlRDD.map(lambda line_list: ((line_list[1], line_list[2]),1) ) 
        .reduceByKey(lambda agg, curr: agg + curr) 
        .top(n, lambda t: t[1])
    print(r2)
​
​
# 创建main函数
if __name__ == '__main__':
    # 1.创建SparkContext对象
    conf = SparkConf().setAppName('pyspark_demo').setMaster('local[*]')
    sc = SparkContext(conf=conf)
​
    # 2.数据输入
    textRDD = sc.textFile('file:///export/data/spark_project/spark_core/data/SogouQ.sample')
    print(textRDD.count())  # 测试原始数据量10000
    # 3.数据处理(切分,转换,分组聚合)
    etlRDD = textRDD.filter(lambda line: line.strip() != '').map(lambda line: line.split()).filter(
        lambda line_list: len(line_list) >= 6)
    # 去除搜索内容两端的 [ ]
    etlRDD = etlRDD.map(lambda line_list:
                        [
                            line_list[0],
                            line_list[1],
                            line_list[2][1:-1],
                            line_list[3],
                            line_list[4],
                            line_list[5]
                        ])
    # 4.数据输出
    # 需求一: 统计每个 关键词 出现了多少次, 最终展示top10数据 注意:'.', '+', '的'  都需要过滤
    # 伪SQL:select 关键词 ,count(*)  from  搜狗表 group by 关键词
    get_topN_keyword(etlRDD, 10)
    # 需求二: 统计每个用户 每个 搜索内容 点击的次数, 最终展示top5数据
    # 伪SQL:select 用户,搜索内容,count(*)  from  搜狗表 group by 用户,搜索内容
    get_topN_search(etlRDD,5)
    # 5.关闭资源
    sc.stop()

可能遇到的错误

原因: reduceByKey只能接收元组中有2个元素的情况

3、数据核对

大数据开发人员/数据分析人员,必须要对自己统计的指标结果负责!
​
结果数据的核对方式:
1- (不常用)在离线文件中直接ctrl+F搜索关键内容核对
2- (常用)一般原始数据会存放在MySQL/Hive中一份,可以编写和代码逻辑完全一样的SQL来进行核对。可以通过如下方式来提高核对效率:
    2.1- 如果是分区表,挑选几个分区进行核对即可
    2.2- 如果是分桶表, 可以抽样查询几个桶核对
    2.3- 也可以使用tablesample函数对抽样查询
    2.4- 可以在SQL的where语句中,添加数据过滤条件,例如:时间范围过滤条件、用户编号过滤条件等,将核对的数据量缩小,提高核对效率
3- (不常用,难度比较大)可以对重点指标的同比、环比进行监控。还可以结合算法的方式对指标统计结果进行检测。
4-  个人经验或者同事互相帮忙查看测试

最新文章
如何优化网站排名,提升搜索引擎排名(建立优化战略)
如何让自己的网站排名靠前成为了许多网站拥有者需要解决的问题,在当今信息爆炸的时代。让更多人发现你的网站,优化关键词排名可以帮助你的网站获取更多的流量。但是如何才能实现这一目标呢?调整网站结构、本文将从建立关键词优化战略、提
网站平面设计,打造视觉盛宴,提升用户体验
随着互联网的快速发展,已经成为企业、个人展示形象、传播信息的重要平台。一个优秀的网站不仅需要具备良好的功能性和实用性,更要在视觉上给带来愉悦的体验。本文将围绕网站平面设计展开,探讨其重要性、设计原则以及如何提升用户体验。一
2024年第一季度全球PC市场实现增长,AI PC贡献显著
根据市调机构CounterPoint的最新报告,2024年第一季度全球PC市场结束了连续八个季度的下滑趋势,同比增长约3%。这一增长主要得益于AI PC的兴起和带动,据悉,45%的新笔记本都是AI PC。品牌方面,联想继续稳居第一,季度出货量达到1370万台
51 SEO秘籍,深度解析网站流量与排名提升策略
51 SEO是一种高效SEO策略,通过优化关键词、内容、技术等方面,帮助网站提升搜索引擎排名和流量。通过精准关键词研究、高质量内容创作、用户体验优化等技术手段,51 SEO助力企业快速提高在线可见度,吸引更多潜在客户。随着互联网的快速发
SEO入门到精通的10个技巧大揭秘
seo入门事实上,SEO入门到精通自己只需要10个步骤,大家可以参考分析一下。1、作为SEO新手,需要了解网站建设,哪怕你不会写代码,但是你要了解网站的建站和基础html代码,这是做好SEO的第一步。简单的网站优化只需要利用网站的源码设置和
福田SEO整站优化,助力企业在线腾飞,抢占市场风口
福田SEO整站优化企业,专注于为企业提供全方位在线竞争力提升服务,助力客户抢占市场先机,实现网络营销目标。随着互联网的飞速发展,越来越多的企业开始意识到网络营销的重要性,而SEO(搜索引擎优化)作为网络营销的重要组成部分,已经成
信息流广告优化师福利:节日文案撰写,看这一篇就够了
刚刚把8月份的数据报告整理完毕,好在目标已完成,原以为月初可以松口气。打开日历才发现,还有6天就是教师节,还有9天就是中秋节,领导下达的新目标新任务随之而来。纳尼!这个月的目标任务是上个月的3倍?上个月若不是爆发了洪荒之力,不可
什么是seo专业b2b
什么是seo专业b2b什么是什么是seo专业b2b6、建立网站地图SiteMap据自己的网站结构,可以制作网站地图,让站长们的网站对搜索引擎极其友好化。让搜索引擎能过SiteMap就这个可以ftp访问整个站点上的绝大部分网页和栏目。最好有两套siteMap,一
Windows端 EMBY 调用本地播放器
问:为什么需要本地播放器?答:因为EMBY自带播放功能一般。ASS支持不佳,字幕/视频渲染效果不佳,自定义能力基本为0。Win端太多优秀的本地播放器方案,pot,mpc,mpv.....问:有没有方法可以让EMBY直接调用本地播放器?答:有。例如 embyTo
74LS系列芯片全面技术指南与应用实例
简介:74LS系列芯片是一类广泛应用于数字电子技术领域的低功耗肖特基TTL逻辑系列集成电路。该系列芯片因其低功耗、高速度和良好兼容性,在电子设备中扮演了重要角色,包括逻辑门电路、数据手册、应用示例、接口技术、故
相关文章
推荐文章
发表评论
0评