行动

以下表格列出了一些常用的Spark支持的行动操作。详细信息,请参考RDD API文档(Scala, Java, Python, R)和 pair RDD 函数文档 (Scala, Java) .

行为 含义
reduce(func) 使用函数func(带两个参数,返回一个)聚合数据集的元素。这个函数应该是交替且组合的,以致于能够被正确地并行计算。
collect() 在驱动程序中,数据集的所有元素作为一个数组返回。在过滤或其他操作之后,要有效地返回数据的小部分子集,这是非常有用的。
count() 返回数据集中元素的数量
first() 返回数据集中的第一个元素(与take(1)类似)
take(n) 返回数据集中的前n个元素组成的数组
takeSample(withReplacement, num, [seed]) 返回一个数据集中num个元素的随机样本数组,withReplacement指示是否需要替换,可选参数seed表示随机数产生的种子
takeOrdered(n, [ordering]) 返回数据集的前n个元素,使用原生排序或一个用户自定义的比较器(comparator)。
saveAsTextFile(path) 把数据集的元素作为一个文本文件(或文本文本集合)写入到一个本地文件系统,HDFS,或任何Hadoop支持的文件系统的指定目录下,Spark将对每个元素调用toString将其转换成文本文件里的一行。
saveAsSequenceFile(path) (Java and Scala) 把数据集的元素作为一个序列文件写入到一个本地文件系统,HDFS,或任何Hadoop支持的文件系统的指定目录下。支持实现了Hadoop Writable接口的RDDs鍵值对。在Scala中,那些能够被隐式转换成Writable(Spark包括对基本类型的转换,像Int,Double,String等)的类型也是支持的。
saveAsObjectFile(path) (Java and Scala) 使用Java序列化,把数据集的元素写入到一个简单的格式中,这个格式随后可以使用SparkContext.objectFile()来加载
countByKey() 仅仅支持(K,V)类型的RDDs,返回一个(K,Int)的Hashmap,表示每个key对应的数量。
foreach(func) 对数据集中的每个元素运行函数func。这通常会导致副作用,例如更新一个累加器(Accumulators)或与外部存储系统进行交互。注意:修改foreach()之外的变量(不是Accumulators)可能会导致未定义行为,如需更详细信息,请查看理解闭包

Spark RDD API也有一些行动的同步版本,如foreach的foreachAsync,它会立即返回一个FutureAction给调用者,而不是阻塞行动的完成。这常用于对行动的同步执行进行管理或等待。

results matching ""

    No results matching ""