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

11,539次阅读
没有评论

共计 1515 个字符,预计需要花费 4 分钟才能阅读完成。


复制代码

 实验环境:

提前准备好 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

所有代码如下

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

结果演示

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

文章来源: (PySpark)RDD 实验实战——求商品销量排行

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-19发表,共计1515字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)