(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上下文
复制代码
data = [(1),(5),(7),(10),(23),(20),(6),(5),(10),(7),(10)]
复制代码
#创建所需的数据集
复制代码
rdd = sc.parallelize(data)
复制代码
#用parallelize方法将data中的数据结构并行化成RDD
复制代码
rdd.sortBy(lambda x:x, ascending=True,numPartitions=1).collect()
复制代码
#rdd.sortBy()用于对RDD中的元素按照指定的排序键进行排序
#rdd.sortBy(keyfunc, ascending=True, numPartitions=None)
#keyfunc,是从 RDD 的每个元素中提取用于排序的键,多分区的话可以通过指定key的排序,来达到操作目的
#ascending表示排序的顺序。 True为升序,False为降序。
#numPartitions表示最终返回结果RDD的分区数。
复制代码
ysj=int(rdd.count()/2)
复制代码
#取data的数据长度并取中间值
复制代码
ss=rdd.sortBy(lambda x:x, ascending=True,numPartitions=1).collect()
复制代码
##把最终排序导入ss数组中
复制代码
print(ss[ysj])
复制代码
#输出结果

最终全代码演示如下:

复制代码
import findspark
from pyspark import SparkContext, SparkConf
findspark.init()
conf = SparkConf().setAppName("jsytest").setMaster("local[4]")
sc = SparkContext(conf=conf)
data = [(1),(5),(7),(10),(23),(20),(6),(5),(10),(7),(10)]
rdd = sc.parallelize(data)
rdd.sortBy(lambda x:x, ascending=True,numPartitions=1).collect()
ysj=int(rdd.count()/2)
ss=rdd.sortBy(lambda x:x, ascending=True,numPartitions=1).collect()
print(ss[ysj])

运行结果演示

复制代码
7
相关推荐
潼心1412o5 分钟前
C语言(长期更新)第15讲 指针详解(五):习题实战
c语言·开发语言
LFly_ice35 分钟前
学习React-9-useSyncExternalStore
javascript·学习·react.js
Murphy_lx1 小时前
Lambda表达式
开发语言·c++
gnip1 小时前
js上下文
前端·javascript
中草药z1 小时前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
yangpipi-1 小时前
C++并发编程-23. 线程间切分任务的方法
开发语言·c++
世伟爱吗喽2 小时前
threejs入门学习日记
前端·javascript·three.js
爬虫程序猿2 小时前
利用 Java 爬虫获取淘宝商品 SKU 详细信息实战指南
java·开发语言·爬虫