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

python_day14_综合案例

文件内容
在这里插入图片描述

导包配置

import jsonfrom pyspark import SparkContext, SparkConf
import osos.environ["PYSPARK_PYTHON"] = "D:/dev/python/python3.10.4/python.exe"
os.environ["HADOOP_HOME"] = "D:/dev/hadoop-3.0.0"
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
conf.set("spark.default.parallelism", "1")  # 写入一个分区
sc = SparkContext(conf=conf)

文件准备

rdd = sc.textFile("D:/search_log.txt")
print(rdd.collect())

在这里插入图片描述

TODO 热门搜索时间段TOP3

"""
取出时间转换为小时
转为(小时,1)二元元组
reduceByKey算子聚合
sorted排序
take前三(返回list,无需collect)
"""
rdd_1 = 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(rdd_1)

在这里插入图片描述

TODO 热门搜索TOP3

"""
取出搜索词
(word,1)二元元组
聚合
TOP3
"""
rdd_2 = 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(rdd_2)

在这里插入图片描述

TODO 统计关键字什么时段搜索最多

"""
filter过滤,保留关键字
(时段,1)二元元组
聚合
排序
取TOP1
"""
rdd_3 = 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(rdd_3)

在这里插入图片描述

TODO 将数据转为JSON,写会文件

"""
存入字典
转为JSON
saveAsTextFile写入文件,写入一个分区:conf.set("spark.default.parallelism", "1")  
"""
rdd.map(lambda x: x.split("\t")). \map(lambda x: {"Time": x[0], "ID": x[1], "KsyWord": x[2], "times_1": x[3], "times_2": x[4], "URL": x[5]}). \map(lambda x: json.dumps(x)). \saveAsTextFile("D:/op_json")

在这里插入图片描述

断开链接

sc.stop()
http://www.lryc.cn/news/99036.html

相关文章:

  • 【算法题】2779. 数组的最大美丽值
  • 文件上传之PHP
  • 人脸检测实战-insightface
  • Linux工具【1】(编辑器vim、编译器gcc与g++)
  • 基于Java+SpringBoot+vue前后端分离古典舞在线交流平台设计实现
  • MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )
  • Qt中的 QIODevice类(包含:随机访问、顺序访问设备)
  • 【JavaScript 07】函数声明 地位平等 函数提升 属性方法 作用域 参数 arguments对象 闭包 IIFE立即调用函数表达式 eval命令
  • MyBatis源码分析_ResultSetHandler(7)
  • Unittest加载执行用例的方法总结
  • 使用预训练的2D扩散模型改进3D成像
  • 微服务测试是什么?
  • 《现代C++教程》笔记(5-7)
  • 红黑树深入剖析【C++】
  • 教育机构视频播放时观看行为分析有哪些应用?
  • Jmeter+验证json结果是否正确小技巧
  • Spring 6.0官方文档示例(22): singleton类型的bean和prototype类型的bean协同工作的方法(一)
  • Android平台GB28181设备接入侧如何同时对外输出RTSP流?
  • el-Cascader 中div上绑定keyDown事件
  • elementUI 表格滚动分页加载请求数据
  • JAVA面试总结-Redis篇章(五)——持久化
  • 【数据结构】·顺序表函数实现·赶紧学起来呀
  • C++,类和对象-多态,制作饮品
  • 网站分析:学习如何分析目标网站的页面结构和URL规律,确定爬取目标和策略。
  • 《向量数据库指南》:向量数据库Pinecone如何集成数据湖
  • Vue3中使用pinia
  • Mysql中(@i:=@i+1)的介绍
  • Nexperia和KYOCERA AVX Components Salzburg 就车规氮化镓功率模块达成合作
  • 数据库应用:Redis安装部署
  • 7.Docker-compose