📜  Apache Spark RDD操作(1)

📅  最后修改于: 2023-12-03 14:39:17.300000             🧑  作者: Mango

Apache Spark RDD 操作

Apache Spark 是一个快速的通用集群计算系统,提供了一种简单而又强大的分布式计算模型。RDD(Resilient Distributed Datasets)是 Spark 中一个最基本的抽象概念,是分布在集群中的可自动恢复且只读的数据集。

RDD 提供了许多针对数据的转换和操作,这里我们主要介绍常见的 RDD 操作。

创建 RDD

Spark 支持多种方式创建 RDD,常见的有从本地文件系统或 HDFS 中读取数据、从内存中读取数据、从已有 RDD 转换得到等。下面列举几个常用的方式。

从本地文件系统或 HDFS 中读取数据
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 转换成另一个 RDD。转换操作与函数式编程中的映射、筛选等概念类似,下面介绍常用的几种转换操作。

map

map 表示将每个元素应用于给定的函数,返回由函数应用后的结果组成的新 RDD。

# 将每个元素乘以 10
new_rdd = data_rdd.map(lambda x: x * 10)
filter

filter 表示筛选出符合条件的元素,返回由符合条件的元素组成的新 RDD。

# 筛选出大于 3 的元素
new_rdd = data_rdd.filter(lambda x: x > 3)
flatMap

flatMap 表示将每个元素应用于给定的函数,函数返回一个元素集合,将这些集合展开成一个新的 RDD。

# 将每个字符串拆分成单词
new_rdd = data_rdd.flatMap(lambda x: x.split())
RDD 行动操作

RDD 的行动操作表示要对 RDD 进行计算并将结果返回到驱动程序,常见的行动操作有 reducecollectcount 等。

reduce

reduce 表示对 RDD 中的元素进行聚合操作,返回一个单值。reduce 会将 RDD 中的元素一一传递给指定的函数,函数返回的值作为下一次计算的输入,直到最后得到单值结果。

# 对 RDD 中的元素求和
result = data_rdd.reduce(lambda x, y: x + y)
collect

collect 表示对 RDD 中所有的元素进行计算并返回一个列表。

# 将 RDD 中的所有元素转换成大写
result = data_rdd.map(lambda x: x.upper()).collect()
count

count 表示计算 RDD 中元素的数量。

# 计算 RDD 中元素的数量
count = data_rdd.count()

除了上述操作,还有许多建立在 RDD 之上的操作。通过这些操作,我们可以对 RDD 进行各种各样的处理,帮助我们实现更加丰富和高效的计算任务。