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

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

实验环境:

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

import findspark
from pyspark import SparkContext, SparkConf

findspark.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)


http://www.kler.cn/a/310053.html

相关文章:

  • BEAGLE: Forensics of Deep Learning Backdoor Attack for Better Defense(论文阅读)
  • Android 14 SPRD 下拉菜单中增加自动亮度调节按钮
  • Javascript中如何实现函数缓存?函数缓存有哪些应用场景?
  • 【网络安全 | 并发问题】Nginx重试机制与幂等性问题分析
  • 浏览器发起 HTTP 请求的典型场景
  • ctfshow-web入门-反序列化(web265-web270)
  • 教师薪酬管理系统的设计与实现
  • Springboot与minio:
  • 《C++魔法:零开销实现抽象工厂模式》
  • LeetCode 滑动窗口 滑动子数组的美丽值
  • Java迭代器Iterator和Iterable有什么区别?
  • 2024 ccpc 网络赛题解
  • SEO之页面优化(一-页面标题2)
  • Java操作数栈分析
  • 【JAVA基础】实现Tomcat基本功能
  • PyQt5-QCheckBox-开关按钮
  • Maven详细介绍
  • 【postgres】笔记
  • 重修设计模式-结构型-适配器模式
  • Doker学习笔记--黑马
  • Unity从2018.1版本开始,可以采用内置JSON进行存档和读档
  • windows C++ 并行编程-异步代理库概述
  • git 删除远程分支的几种写法
  • 基于stm32的四旋翼无人机控制系统设计系统设计与实现
  • vs2022配置opencv==4.9.0(C++)
  • 所有用贪心的算法和所有用动态规划(dp)的算法合集