首页 > 技术文章 > RDD之action算子

hhxxlx 2021-05-22 16:44 原文

action算子

1.reduce(function)

reduce将RDD中元素两两传递给输入函数,同时产生一个新值,新值与RDD中下一个元素再被传递给输入函数,直到最后只有一个值为止。

from operator import add
add(1,2)
3
sc.parallelize([1,2,3,4,5]).reduce(add)
15
sc.parallelize((2 for_in range(10))).map(lambda x:1).cache().reduce(add)
10

2 for_in range(10)表示产生10个元素,元素值都为2,map(lambda x:1)将所有上网元素重置为1,cache()表示将结果进行缓存,最后一次进行reduce操作。

2.collect()

返回一个包含RDD所有元素的列表(list)。

sc.parallelize([1,2]).collect()
[1,2]

3.count()

返回数据集中元素个数,默认Long类型。

sc.parallelize([1,2,5,3]).count()
4

4.first()

返回数据集的第一个元素(类似于take(1))

sc.parallelize([5,10,1,2,9,3,4,5,6,7]).first()
5
type (sc.parallelize([5,10,1,2,9,3,4,5,6,7]).first())
<class 'int'>

5.take(num)
返回RDD中的前n个元素值,返回的结果为列表类型

sc.parallelize([1,2,5,3,6,7,8,9,10],3).take(4)
[1,2,5,3]

6.take(n)

返回一个包含数据集前n个元素的数组(从0下标到n-1下标的元素),不排序。

7.takeOrdered(n,[ordering])

返回RDD中前n个元素,并按默认顺序排序(升序)或者按自定义比较器顺序排序。

8.saveAsTextFile(path)

将dataSet中元素以文本文件的形式写入本地文件系统或者HDFS等。Spark将对每个元素调用toString方法,将数据元素转换为文本文件中的一行记录。

若将文件保存到本地文件系统,那么只会保存在executor所在机器的本地目录。

9.saveAsSequenceFile(path)(Java and Scala)

将dataSet中元素以Hadoop SequenceFile的形式写入本地文件系统或者HDFS等。(对pairRDD操作)

10.saveAsObjectFile(path)(Java and Scala)

将数据集中元素以ObjectFile形式写入本地文件系统或者HDFS等。

11.countByKey()

用于统计RDD[K,V]中每个K的数量,返回具有每个key的计数的(k,int)pairs的hashMap。

12.foreach(function)

对数据集中每一个元素运行函数function。

Spark2.3及之后的官方文档中将原[numTasks]任务数参数改为了[numPartitions]分区数

推荐阅读