Transformations类算子
Transformations | 含义 |
---|---|
map | 返回一个新的分布式数据集,该数据集是通过将源的每个元素传递给函数func形成的。 |
filter | 返回一个新的数据集,该数据集是通过选择源中func返回true的那些元素形成的。 |
flatMap | 与map相似,但是每个输入项都可以映射到0个或多个输出项(因此func应该返回Seq而不是单个项)。 |
mapPartitions | 与map相似,但是分别在RDD的每个分区(块)上运行,因此func在类型T的RDD上运行时必须为Iterator => Iterator <U>类型。 |
mapPartitionsWithIndex | 与mapPartitions相似,但它还为func提供表示分区索引的整数值,因此当在类型T的RDD上运行时,func必须为(Int,Iterator )=> Iterator <U>类型。 |
sample | 试分数分数的数据的,具有或不具有替换,使用给定的随机数发生器的种子。 |
union | 返回一个新的数据集,其中包含源数据集中的元素和参数的并集。 |
intersection | 返回一个新的RDD,其中包含源数据集中的元素和参数的交集。 |
distinct | 返回一个新的数据集,其中包含源数据集的不同元素。 |
groupByKey | 在(K,V)对的数据集上调用时,返回(K,Iterable )对的数据集。注意:如果要分组以便对每个键执行聚合(例如求和或平均值),则使用reduceByKey 或aggregateByKey 将产生更好的性能。注意:默认情况下,输出中的并行度取决于父RDD的分区数。您可以传递一个可选numPartitions 参数来设置不同数量的任务。 |
reduceByKey | 在(K,V)对的数据集上调用时,返回(K,V)对的数据集,其中每个键的值使用给定的reduce函数func进行汇总,该函数必须为(V,V)=> V.与in一样groupByKey ,reduce任务的数量可以通过可选的第二个自变量配置。 |
aggregateByKey | 在(K,V)对的数据集上调用时,返回(K,U)对的数据集,其中每个键的值使用给定的Combine函数和中性的“零”值进行汇总。允许与输入值类型不同的聚合值类型,同时避免不必要的分配。像in中一样groupByKey ,reduce任务的数量可以通过可选的第二个参数进行配置。 |
sortByKey | 在由K实现Ordered的(K,V)对的数据集上调用时,返回(K,V)对的数据集,按布尔值指定,按键以升序或降序排序ascending 。 |
join | 在(K,V)和(K,W)类型的数据集上调用时,返回(K,(V,W))对的数据集,其中每个键都有所有成对的元素。外连接通过支持leftOuterJoin ,rightOuterJoin 和fullOuterJoin 。 |
cogroup | 在(K,V)和(K,W)类型的数据集上调用时,返回(K,(Iterable ,Iterable ))元组的数据集。此操作也称为groupWith 。 |
cartesian | 在类型T和U的数据集上调用时,返回(T,U)对(所有元素对)的数据集。 |
pipe | 通过外壳命令(例如Perl或bash脚本)通过管道传输RDD的每个分区。将RDD元素写入进程的stdin,并将输出到其stdout的行作为字符串的RDD返回。 |
coalesce | 将RDD中的分区数减少到numPartitions。筛选大型数据集后,对于更有效地运行操作很有用。 |
repartition | 在RDD中随机重排数据以创建更多或更少的分区,并在整个分区之间保持平衡。这总是会通过网络重新整理所有数据。 |
repartitionAndSortWithinPartitions | 根据给定的分区程序对RDD重新分区,并在每个结果分区中,按其键对记录进行排序。这比repartition 在每个分区内调用然后排序更为有效,因为它可以将排序推入洗牌机制。 |
Action算子
Action | 含义 |
---|---|
reduce | 使用函数func(使用两个参数并返回一个参数)聚合数据集的元素。该函数应该是可交换的和关联的,以便可以并行正确地计算它。 |
collect | 在驱动程序中将数据集的所有元素作为数组返回。这通常在返回足够小的数据子集的过滤器或其他操作之后很有用。 |
count | 返回数据集中的元素数。 |
first | 返回数据集的第一个元素 类似于take(1) |
take | 返回具有数据集的前n个元素的数组。 |
takeSample | 返回带有数据集num个元素的随机样本的数组,带有或不带有替换,可以选择预先指定一个随机数生成器种子。 |
takeOrdered | 使用自然顺序或自定义比较器返回RDD 的前n个元素。 |
saveAsTextFile | 将数据集的元素以文本文件(或文本文件集)的形式写入本地文件系统,HDFS或任何其他Hadoop支持的文件系统中的给定目录中。Spark将在每个元素上调用toString,以将其转换为文件中的一行文本。 |
saveAsSequenceFile | 在本地文件系统,HDFS或任何其他Hadoop支持的文件系统的给定路径中,将数据集的元素作为Hadoop SequenceFile写入。这在实现Hadoop的Writable接口的键/值对的RDD上可用。在Scala中,它也可用于隐式转换为Writable的类型(Spark包括对基本类型(如Int,Double,String等)的转换)。 |
saveAsObjectFile | 使用Java序列化以简单的格式编写数据集的元素,然后可以使用进行加载 SparkContext.objectFile() 。 |
countByKey | 仅在类型(K,V)的RDD上可用。返回(K,Int)对的哈希图以及每个键的计数。 |
foreach | 在数据集的每个元素上运行函数func。通常这样做是出于副作用,例如更新累加器或与外部存储系统交互。注意:在之外修改除累加器以外的变量foreach() 可能会导致不确定的行为。有关更多详细信息,请参见了解闭包。 |