spark之键值对RDD

2024-08-28 01:38
文章标签 键值 spark rdd

本文主要是介绍spark之键值对RDD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、键值对RDD生成方式

1.1、通过map函数来生成

通过map函数将x映射为(x,1)

#在本地进行操作
textFile = sc.textFile("file:///home/jsy/spark_test/test.txt")
wordCount = textFile.flatMap(lambda line: line.split(" ")).map(lambda x:(x,1))

2、常用键值对转换方式

常用的键值对转换操作包括reduceByKey()、groupByKey()、sortByKey()、join()、cogroup()等,下面我们通过实例来介绍。

from pyspark import SparkContext
sc = SparkContext( 'local', 'test')

2.1、声明一个键值对RDD

#在本地进行操作
textFile = sc.textFile("file:///home/jsy/spark_test/test.txt")
wordCount = textFile.flatMap(lambda line: line.split(" ")).map(lambda x:(x,1))

2.2、reduceByKey(func) 使用func函数合并具有相同键的值

#reduceByKey(func) 使用func函数合并具有相同键的值
rdd=wordCount.reduceByKey(lambda a,b:a+b)

2.3、groupByKey()的功能是,对具有相同键的值进行分组。

#groupByKey()的功能是,对具有相同键的值进行分组。
wordCount.groupByKey().collect()

2.4、keys返回键值对RDD的keys作为一个新的RDD

       values返回键值对的values作为一个新的RDD

#keys返回键值对RDD的keys作为一个新的RDD
rdd.keys().collect()#values返回键值对的values作为一个新的RDD
rdd.values().collect()

2.5、sortByKey()返回根据键排序的RDD

#sortByKey()返回根据键排序的RDD
rdd.sortByKey().collect()

2.6、mapValues(func)只想对键值对RDD的value部分进行处理

#mapValues(func)只想对键值对RDD的value部分进行处理
rdd.mapValues(lambda x:x+1).collect()

2.7、join对于内连接,对于给定的两个输入数据集(K,V1)和(K,V2),只有在两个数据集中都存在的key才会被输出,最终得到一个(K,(V1,V2))类型的数据集。

#join内连接(join)、左外连接(leftOuterJoin)、右外连接(rightOuterJoin)
#对于内连接,对于给定的两个输入数据集(K,V1)和(K,V2),只有在两个数据集中都存在的key才会被输出,最终得到一个(K,(V1,V2))类型的数据集。
rdd2=rdd.filter(lambda x:x[1]>1)
rdd2=rdd2.mapValues(lambda x:x+1)
rdd2.collect()
rdd3=rdd.join(rdd2)
rdd3.collect()

2.8、综合应用

#给定一组键值对(“spark”,2),(“hadoop”,6),(“hadoop”,4),(“spark”,6),请计算每个键对应的平均值
rdd4=sc.parallelize([("spark",2),("hadoop",6),("hadoop",4),("spark",6)])
rdd4.collect()
rdd5=rdd4.mapValues(lambda x:(x,1))
print(rdd5.collect())
rdd6=rdd5.reduceByKey(lambda a,b :(a[0]+b[0],a[1]+b[1])).mapValues(lambda x:x[0]/x[1])
rdd6.collect()

 

这篇关于spark之键值对RDD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113363

相关文章

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

RDD的map和flatMap

在 Apache Spark 中,map 和 flatMap 是 RDD(弹性分布式数据集)中最常用的转换操作之一。 map 假设你有一个包含整数的 RDD,你想要计算每个元素的平方。 from pyspark import SparkContextsc = SparkContext(appName="MapExample")# 创建一个包含整数的 RDDnumbers = sc.para

【spark 读写数据】数据源的读写操作

通用的 Load/Save 函数 在最简单的方式下,默认的数据源(parquet 除非另外配置通过spark.sql.sources.default)将会用于所有的操作。 Parquet 是一个列式存储格式的文件,被许多其他数据处理系统所支持。Spark SQL 支持对 Parquet 文件的读写还可以自动的保存源数据的模式 val usersDF = spark.read.load("e

Redis 命令不区分大小写,键值区分大小写Redis

今天才知道   Redis 命令不区分大小写   但键值区分大小写的

Spark数据介绍

从趋势上看,DataFrame 和 Dataset 更加流行。 示例场景 数据仓库和 BI 工具集成: 如果你需要处理存储在数据仓库中的结构化数据,并且希望与 BI 工具集成,那么 DataFrame 和 Dataset 是首选。 机器学习流水线: 在构建机器学习流水线时,使用 DataFrame 和 Dataset 可以更好地管理数据流,并且可以方便地与 MLlib 集成。 实时数据处理:

Mac搭建华为云平台Hadoop+spark步骤

1、安装终端和文件传输软件 下载、安装、配置 详戳数据平台搭建文件夹 Transmit 用于文件传输 iTerm2    用于终端 2、连接与登录 mac 使用iTerm2快捷登录远程服务器 Mac Transmit连接 (密码不可复制,手动输入) 3、安装jdk 4、修改主机名 Linux系统下如何修改主机名 4、安装配置hadoop

Spark-在集群上运行Spark

Spark-在集群上运行Spark

Spark—数据读取和保存

Spark—数据读取和保存

Spark源码分析之Spark Shell(上)

终于开始看Spark源码了,先从最常用的spark-shell脚本开始吧。不要觉得一个启动脚本有什么东东,其实里面还是有很多知识点的。另外,从启动脚本入手,是寻找代码入口最简单的方法,很多开源框架,其实都可以通过这种方式来寻找源码入口。 先来介绍一下Spark-shell是什么? Spark-shell是提供给用户即时交互的一个命令窗口,你可以在里面编写spark代码,然后根据你的命令立即进行