当前位置: 首页 > news >正文

PySpark 数据操作(综合案例)

搜索引擎日志分析

要求:

读取文件转换成RDD,并完成:

  • 打印输出:热门搜索时间段(小时精度)Top3
  • 打印输出:热门搜索词Top3
  • 打印输出:统计黑马程序员关键字在哪个时段被搜索最多
  • 将数据转换为JSON格式,写出为文件

代码:

"""
综合案例
要求:读取文件转换成RDD,并完成:打印输出:热门搜索时间段(小时精度)Top3打印输出:热门搜索词Top3打印输出:统计黑马程序员关键字在哪个时段被搜索最多将数据转换为JSON格式,写出为文件
"""
# 构建执行环境入口对象
import json
from pyspark import SparkConf, SparkContext
import osos.environ['PYSPARK_PYTHON'] = "D:/Python/Python311/python.exe"
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
conf.set('spark.default.parallelism', '1')
sc = SparkContext(conf=conf)# 读取文件转换成RDD,并完成:
rdd = sc.textFile("E:/百度网盘/1、Python快速入门(8天零基础入门到精通)/资料/第15章资料/资料/search_log.txt")
# print(rdd.collect())
# TOOP 需求1:热门搜索时间段(小时精度)Top3
# 1.1 取出全部的时间并转换为小时
# 1.2 转换为(小时,1)的二元元组
# 1.3 Key分组聚合Value
# 1.4 排序(降序)
# 1.5 取前三
# result1 = rdd.map(lambda x: x.split("\t")).\
#     map(lambda x: x[0][:2]).\
#     map(lambda x: (x, 1)).\
#     reduceByKey(lambda a, b: a + b).\
#     sortBy(lambda x: x[1], ascending=False, numPartitions=1).\
#     take(3)
# print("需求1的结果:", result1)
result1 = rdd.map(lambda x: (x.split("\t")[0][:2], 1)). \reduceByKey(lambda a, b: a + b). \sortBy(lambda x: x[1], ascending=False, numPartitions=1). \take(3)
print("需求1的结果:", result1)# TOOP 需求2:热门搜索词Top3
# 2.1 取出全部的搜索词
# 2.2 (词,1)二元元组
# 2.3 分组聚合
# 2.4 排序
# 2.5 Top3
result2 = rdd.map(lambda x: (x.split("\t")[2], 1)). \reduceByKey(lambda a, b: a + b). \sortBy(lambda x: x[1], ascending=False, numPartitions=1). \take(3)
print("需求2的结果:", result2)# TOOP 需求3:统计黑马程序员关键字在哪个时段被搜索最多
# 3.1 过滤内容,只保留黑马程序员关键字
# 3.2 转换为(小时,1)的二元元组
# 3.3 Key分组聚合Value
# 3.4 排序(降序)
# 3.5 取前1
result3 = rdd.map(lambda x: x.split("\t")).\filter(lambda x: x[2] == '黑马程序员').\map(lambda x: (x[0][:2], 1)).\reduceByKey(lambda a, b: a + b).\sortBy(lambda x: x[1], ascending=False, numPartitions=1).\take(1)
print("需求3的结果:", result3)# TOOP 需求4:将数据转换为JSON格式,写出为文件
# 4.1 转换为JSON格式的RDD
# 4.2 写出为文件
rdd.map(lambda x: x.split("\t")).\map(lambda x: {'time': x[0], 'user_id': x[1], 'key_word': x[2], 'rank1': x[3], 'rank2': x[4], 'url': x[5]}).\saveAsTextFile("D:/output_json")

 

 

 

http://www.lryc.cn/news/104793.html

相关文章:

  • 产品经理如何平衡用户体验与商业价值?
  • 【PostgreSQL】系列之 一 CentOS 7安装PGSQL15版本(一)
  • Nginx解决文件服务器文件名显示不全的问题
  • IO进程线程第四天(8.1)
  • WAF绕过-权限控制篇-后门免杀
  • LED灯的驱动,GPIO子系统,添加按键的中断处理
  • Gradle和Maven的区别
  • C#中 使用yield return 优化大数组或集合的访问
  • ROS实现导航中止(pub命令版+C++代码版)
  • 【VTK】读取一个 STL 文件,并使用 Qt 显示出来,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK
  • 数据结构--基础知识
  • 天工开物 #7 Rust 与 Java 程序的异步接口互操作
  • python实现视频转GIF动图(无水印,包含代码详解和.exe执行文件)
  • 一套AI+医疗模式的医院智慧导诊系统源码:springboot+redis+mybatis plus+mysql
  • Android 使用modbus协议与可能遇到的问题解决一览
  • Virtualbox虚拟机中Ubuntu忘记密码
  • isPresent()
  • DC.js教程_编程入门自学教程_菜鸟教程-免费教程分享
  • Qt应用开发(基础篇)——滑块类 Slider、ScrollBar、Dial
  • iOS的NSUserActivity
  • Android HTTP使用(详细版)
  • 【雕爷学编程】MicroPython动手做(25)——语音合成与语音识别
  • 前端开发:基于cypress的自动化实践
  • C++类和对象(下部曲)
  • 解决eclipse 打开报错 An error has occurred. See the log file null.
  • javascript学习
  • 基于SSM实现个人随笔分享平台:创作心灵,分享自我
  • 从零开始学Docker(二):启动第一个Docker容器
  • unity 鼠标事件
  • 【ChatGPT】相关解读