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

PySpark基础例题(包含map、reduceByKey、filter、sortBy等算子)

建议结合一下文章学习:

1.PySpark基础知识(python)-CSDN博客

2.通过PySpark单词计数案例带你学习map、flatMap、reduceByKey方法(Python)-CSDN博客

3.什么是RDD?-CSDN博客

文本文件:PySpark基础例题(包含map、reduceByKey、filter、sortBy等算子)资源-CSDN下载


现有一份商品销售数据文件test2.txt,数据格式为每行一个 JSON 对象,包含id(订单 ID)、timestamp(时间戳)、category(商品类别)、areaName(销售城市)、money(销售金额,字符串类型)等字段。请使用 PySpark 完成以下数据处理需求,编写对应的 Spark 代码:

  1. 需求 1:城市销售额排序
    读取test2.txt文件数据,计算各销售城市的总销售额(需将money字段转为整数类型),并按照总销售额从高到低的顺序排序,最终输出各城市及其对应的总销售额。

  2. 需求 2:全量商品类别统计
    基于上述读取的销售数据,提取所有在售的商品类别,要求去除重复类别,最终输出所有不重复的商品类别列表。

  3. 需求 3:北京在售商品类别统计
    从销售数据中筛选出 “北京” 地区的所有记录,提取该地区在售的商品类别并去除重复项,最终输出北京地区所有不重复的商品类别列表。

代码实现:

from pyspark import SparkConf, SparkContext
import os
import jsonfrom unicodedata import categoryos.environ['PYSPARK_PYTHON'] = "E:/Python/Python3.10.4/python.exe"
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)# 需求1:城市销售额排序
# 1.1 读取文件到RDD(注意:替换为你本地test2.txt的实际路径)
file_rdd = sc.textFile("D:/test2.txt")
# 1.2 去除每行末尾可能的逗号(修复JSON解析错误),无需按|分割(原数据无|分隔符)
json_str_rdd = file_rdd.map(lambda x: x.strip(","))
# 1.3 将JSON字符串转换为字典(修复原代码split后无法解析的问题)
dict_rdd = json_str_rdd.map(lambda x: json.loads(x))
print(dict_rdd.collect())
#1.4取出城市和销售额名额
city_with_money_rdd = dict_rdd.map(lambda x:(x['areaName'],int(x['money'])))
#1.5按城市分组按销售额整合
city_result_rdd = city_with_money_rdd.reduceByKey(lambda a,b: a+b)
#1.6按销售额整合结果进行排序
result1_rdd = city_result_rdd.sortBy(lambda x:x[1],ascending=False,numPartitions=1)
print("需求1的结构是:",result1_rdd.collect())#需求2:全部城市有多少商品类别在售卖
#2.1取出全部商品类别
category_rdd = dict_rdd.map(lambda x:x['category'] ).distinct()
print("需求2的结果是:",category_rdd.collect())#需求3 北京有哪些商品类别在售卖
#3.1过滤北京市的数据
beijing_date_rdd = dict_rdd.filter(lambda x:x['areaName'] == '北京')
#3.2取出全部商品类别
result3_rdd = beijing_date_rdd.map(lambda x:x['category']).distinct()
print("需求3的结果是:",result3_rdd.collect())

实现效果图:


文章转载自:

http://U7PVb6Mb.yktzq.cn
http://dUseAaKk.yktzq.cn
http://2eDYeVRM.yktzq.cn
http://dnBl5Oa3.yktzq.cn
http://8o8alkCH.yktzq.cn
http://uaStW1Wn.yktzq.cn
http://ByuzNs23.yktzq.cn
http://gqxmGVFH.yktzq.cn
http://Wm3UrSfB.yktzq.cn
http://ZRTO5hHp.yktzq.cn
http://rOCvlZnN.yktzq.cn
http://FxDq27Yy.yktzq.cn
http://dtvE4d69.yktzq.cn
http://yNxjXPgt.yktzq.cn
http://G7Nd1tZm.yktzq.cn
http://uePhzGuO.yktzq.cn
http://mgCfNAPE.yktzq.cn
http://2NmTT5sA.yktzq.cn
http://18JWMzzu.yktzq.cn
http://Mmx761ur.yktzq.cn
http://ubcOkdZC.yktzq.cn
http://5xm35cVA.yktzq.cn
http://mp357y1t.yktzq.cn
http://YfT5yoIR.yktzq.cn
http://1RggKrzH.yktzq.cn
http://70vCQFA7.yktzq.cn
http://PvMfG8iq.yktzq.cn
http://OZLDedhw.yktzq.cn
http://Eu5HEse8.yktzq.cn
http://N9RXivcw.yktzq.cn
http://www.dtcms.com/a/383188.html

相关文章:

  • 导购APP佣金模式的分布式锁实现:基于Redis的并发控制策略
  • 运维自动化工具Ansible大总结20250914
  • Linux 库开发入门:静态库与动态库的 2 种构建方式 + 5 个编译差异 + 3 个加载技巧,新手速看
  • Effective Python 第28条:Python列表推导式的简洁与复杂性管理
  • 【MySQL】从零开始学习MySQL:基础与安装指南
  • 基于STM32的病人监护系统
  • Python与Go结合
  • AI大师系列——杰夫·辛顿(深度学习)
  • Unity核心概念⑨:Screen
  • 《MLB美职棒大联盟》专业运动员标准·棒球1号位
  • reversed()方法
  • Altium Designer(AD24)另存为功能介绍
  • OD C卷 - 计算三叉搜索树的高度
  • 导购返利APP的数据库性能优化:索引设计与查询调优实践
  • pretrain-Alignment范式的强大与极限——李宏毅大模型2025第五讲笔记
  • CSP集训错题集 第一周
  • MCU软件驱动分离
  • 浏览器中javascript时间线,从加载到执行
  • SP‘24 SSRFuzz论文学习
  • 【算法】day2 双指针+滑动窗口
  • 拆解 AI 大模型 “思考” 逻辑:从数据训练到推理输出的完整链路
  • Axios在鸿蒙应用开发中的使用
  • Go高性能双端队列Deque实战指南
  • StringBuilder 深度解析:数据结构与扩容机制的底层细节
  • Altium Designer(AD24)自学资源介绍
  • cs144 lab0学习总结
  • Playwright MCP浏览器自动化指南
  • 经典俄罗斯方块游戏 | 安卓三模式畅玩,暂时无广告!
  • JVM调优常用命令
  • 文心快码Comate - 百度推出的AI编码助手