📅  最后修改于: 2023-12-03 14:39:17.300000             🧑  作者: Mango
Apache Spark 是一个快速的通用集群计算系统,提供了一种简单而又强大的分布式计算模型。RDD(Resilient Distributed Datasets)是 Spark 中一个最基本的抽象概念,是分布在集群中的可自动恢复且只读的数据集。
RDD 提供了许多针对数据的转换和操作,这里我们主要介绍常见的 RDD 操作。
Spark 支持多种方式创建 RDD,常见的有从本地文件系统或 HDFS 中读取数据、从内存中读取数据、从已有 RDD 转换得到等。下面列举几个常用的方式。
from pyspark import SparkContext
# 初始化 SparkContext
sc = SparkContext("local", "RDD Operations")
# 从文件系统或 HDFS 中读取数据创建 RDD
data_rdd = sc.textFile("/path/to/data.txt")
from pyspark import SparkContext
# 初始化 SparkContext
sc = SparkContext("local", "RDD Operations")
# 从内存中读取数据创建 RDD
data_rdd = sc.parallelize([1, 2, 3, 4, 5])
RDD 提供了许多转换操作,可以将一个 RDD 转换成另一个 RDD。转换操作与函数式编程中的映射、筛选等概念类似,下面介绍常用的几种转换操作。
map
表示将每个元素应用于给定的函数,返回由函数应用后的结果组成的新 RDD。
# 将每个元素乘以 10
new_rdd = data_rdd.map(lambda x: x * 10)
filter
表示筛选出符合条件的元素,返回由符合条件的元素组成的新 RDD。
# 筛选出大于 3 的元素
new_rdd = data_rdd.filter(lambda x: x > 3)
flatMap
表示将每个元素应用于给定的函数,函数返回一个元素集合,将这些集合展开成一个新的 RDD。
# 将每个字符串拆分成单词
new_rdd = data_rdd.flatMap(lambda x: x.split())
RDD 的行动操作表示要对 RDD 进行计算并将结果返回到驱动程序,常见的行动操作有 reduce
、collect
、count
等。
reduce
表示对 RDD 中的元素进行聚合操作,返回一个单值。reduce
会将 RDD 中的元素一一传递给指定的函数,函数返回的值作为下一次计算的输入,直到最后得到单值结果。
# 对 RDD 中的元素求和
result = data_rdd.reduce(lambda x, y: x + y)
collect
表示对 RDD 中所有的元素进行计算并返回一个列表。
# 将 RDD 中的所有元素转换成大写
result = data_rdd.map(lambda x: x.upper()).collect()
count
表示计算 RDD 中元素的数量。
# 计算 RDD 中元素的数量
count = data_rdd.count()
除了上述操作,还有许多建立在 RDD 之上的操作。通过这些操作,我们可以对 RDD 进行各种各样的处理,帮助我们实现更加丰富和高效的计算任务。