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

(PySpark)RDD实验实战——求商品销量排行

实验环境:

提前准备好findspark,pyspark,py4j等库

import findspark
from pyspark import SparkContext, SparkConffindspark.init()
#初始化spark,默认为你所设定的环境变量
conf = SparkConf().setAppName("jsytest").setMaster("local[4]")
#创建一个SparkConf对象,用于配置Spark应用程序,用setAppName来设置程序名称,
#用setMaster来设置运行模式和线程数,这里为本地模式,4个线程
sc = SparkContext(conf=conf)
#创建一个SparkContext对象,它是与Spark集群通信的主要接口
# sc.stop()  #关闭spark上下文
goods = [("Book",30,50),("Pen",5,80),("Notebook",15,60),("Pencil",2,70),("Eraser",3,50)]
#创建所需的数据集(商品名,价格,销量)
n=2
#所需的前n个排序
rdd = sc.parallelize(goods)
#用parallelize方法将goods中的数据结构并行化成RDD
rdd.sortBy(lambda x:x[2], ascending=True,numPartitions=3).collect()
#rdd.sortBy()用于对RDD中的元素按照指定的排序键进行排序
#rdd.sortBy(keyfunc, ascending=True, numPartitions=None)
#keyfunc,是从 RDD 的每个元素中提取用于排序的键,多分区的话可以通过指定key的排序,来达到操作目的
#ascending表示排序的顺序。 True为升序,False为降序。
#numPartitions表示最终返回结果RDD的分区数。
#这里取的是数据中的第三分区销量作为key,返回的值也是三个分区
ss=rdd.sortBy(lambda x:x[2], ascending=True,numPartitions=3).collect()
##把最终排序导入ss数组中
c=rdd.count()-1
#取数组上限
ysj=0
#记录循环次数
while ysj<=n-1:
#循环输出print("销售第",ysj+1,"多的:",ss[c-ysj])ysj=ysj+1

所有代码如下

import findspark
from pyspark import SparkContext, SparkConf
findspark.init()
conf = SparkConf().setAppName("jsytest").setMaster("local[4]")
sc = SparkContext(conf=conf
goods = [("Book",30,50),("Pen",5,80),("Notebook",15,60),("Pencil",2,70),("Eraser",3,50)]
n=2
rdd = sc.parallelize(goods)
rdd.sortBy(lambda x:x[2], ascending=True,numPartitions=3).collect()
ss=rdd.sortBy(lambda x:x[2], ascending=True,numPartitions=3).collect()
c=rdd.count()-1
ysj=0
while ysj<=n-1:print("销售第",ysj+1,"多的:",ss[c-ysj])ysj=ysj+1

结果演示

销售第 1 多的: ('Pen', 5, 80)
销售第 2 多的: ('Pencil', 2, 70)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024年华为杯-研赛F题论文问题一二讲解+代码分享
  • LabVIEW多语言支持优化
  • 基于python上门维修预约服务数据分析系统
  • 【Linux课程学习】make/Makefile:Linux项目自动化构建工具
  • 英语六级-学习
  • redis单点、主从、哨兵、集群的不同
  • WPF DataGrid 赋值与修改
  • 生活小助手系统小程序的设计
  • 灵当CRM系统index.php存在SQL注入漏洞
  • sicp每日一题[2.20]
  • MySQL基础基础篇 - SQL
  • 数据结构:内部排序
  • spark 面试题
  • Linux 防火墙:iptables (二)
  • JVM 一个对象是否已经死亡?
  • #Java异常处理
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • DOM的那些事
  • Golang-长连接-状态推送
  • javascript面向对象之创建对象
  • mongo索引构建
  • MYSQL 的 IF 函数
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • ReactNative开发常用的三方模块
  • React中的“虫洞”——Context
  • 对超线程几个不同角度的解释
  • 检测对象或数组
  • 离散点最小(凸)包围边界查找
  • 实战|智能家居行业移动应用性能分析
  • 移动端 h5开发相关内容总结(三)
  • 正则与JS中的正则
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 阿里云重庆大学大数据训练营落地分享
  • 第二十章:异步和文件I/O.(二十三)
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​数据链路层——流量控制可靠传输机制 ​
  • #include到底该写在哪
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Git) gitignore基础使用
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (四)js前端开发中设计模式之工厂方法模式
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • . Flume面试题
  • .NET WPF 抖动动画
  • .Net7 环境安装配置
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
  • .NetCore部署微服务(二)
  • .NET下的多线程编程—1-线程机制概述
  • :=
  • @JsonFormat与@DateTimeFormat注解的使用