0、前言
本文列举5个常见的RDD转换函数:
操作 | 含义 |
---|---|
filter(func) | 筛选出满足函数func的元素,并返回一个新的数据集 |
map(func) | 将每个元素传递到函数func中,并将结果返回一个新的数据集 |
flatMap(func) | 与map类似,但每个输入元素都可以映射到0个或多个输出结果 |
groupByKey() | 应用于(K, V)键值对的数据集时,返回一个新的(K, Iterable)形式的数据集 |
reduceByKey(func) | 应用于(K, V)键值对的数据集时,返回一个新的(K, V)形式的数据集,其中每个值是将每个key传递到函数func中进行聚合后的结果 |
1、filter(func)
word.txt:
Hadoop is good
Spark is better
Spark is fast
# sc.textFile('word.txt')是创建RDD对象的一种方式,可以是打开本地文件,可以是打开HDFS文件,也可以是打开云端文件
# 另一种创建RDD对象的方式是并行化数组或集合,eg:sc.parallelize([1, 2, 3, 4, 5])
lines = sc.textFile('word.txt')
linesWithSpark = lines.filter(lambda line : 'Spark' in line)
# collect是动作函数,作用是返回RDD中的数据,以list形式
linesWithSpark.collect()
输出:
Spark is better
Spark is fast
2、map(func)
eg1:
rdd1 = sc.parallelize([1, 2, 3, 4, 5])
rdd2 = rdd1.map(lambda x:x + 10)
rdd2.collect()
输出:
11
12
13
14