概览
这里只有 Scala 的API,Java 与 Python 请看官方API。
1.转换
Transformation |
概念翻译 |
---|---|
map(func) | 返回每个元素经过 func 方法处理后,所生成的新元素所组成的分布式数据集合(RDD)。 |
filter(func) | 返回一个通过了方法 func 筛选的元素所组成的数据集合;func 返回 true,即代表通过筛选。 |
flatMap(func) | 与 map 相似,不过每一个输入项能够被映射为0个或多个输出项(所以 func 应该返回一个Seq(队列) 而不是一个单项)。 |
mapPartitions(func) | 与 map 相似,但是他是单独运行在 RDD 的每一个分区(块)上,所以假如 RDD 是类型 T 时,则 func 的类型必须为 Iterator<T> => Iterator<U> 。 |
mapPartitionsWithIndex(func) | 与 mapPartitions 相似,但是会另外提供一个整数值代表分区的下标(index), 所以假如 RDD 是类型 T 时,func 的类型必须为 (Int, Iterator<T>) => Iterator<U>. |
sample(withReplacement, fraction, seed) | 第一参数是指明是否放回,第二个参数是抽取数量,第三个是随机种子。 |
union(otherDataset) | 返回一个包含了源数据集和参数的新数据集 |
intersection(otherDataset) | 返回一个元数据集与参数的相交之后的新的 RDD(就是交集)。 |
distinct([numTasks]) | 对数据集进行去重操作 |
groupByKey([numTasks]) | 当在一个(K,V)数据集上调用他,会返回一个 (K, Iterator<V>) 数据集。 注意 :当你分组他们是为了在每个Key上聚合他们(比如求和或者平均值),使用 reduceByKey 或者 aggregateByKey 将会收益到更高的性能。注意 :输出的并发水平依赖于父 RDD 分区的个数。你能通过可选的 numTasks 参数设置不同的 task 数目。 |
reduceByKey(func, [numTasks]) | 当在一个(K,V)数据集上调用他时,将会返回一个在不同的key上进行了聚合了Value的新的 (K,V) 数据集,聚合的方式是使用 func 方法指定,且必须是 (V,V) => V 类型的。 与 groupByKey 很像,reduce task 的个数是使用第二个可选参数指定的。 |
aggregateByKey(zeroValue)(seqOp, combOp, [NumTasks]) | 当在一个(K,V)类型的数据集上调用他时,他就会返回一个按照 key 来进行聚合后生成的 (K,U) 对,聚合的方式是通过提供一个合并方法和一个中立的“零”值来完成的。允许被聚合的 value 的类型与输入的 value 的类型不一样,这样可以禁止没必要的分配。和 groupByKey相似,reduce task 的个数是使用第二个可选参数指定的。 |
sortByKey([ascending],[numTasks]) | 在(K,V)类型上调用他以实现按 K 排序。返回排序后的键值对。使用第一参数(boolean)值来决定是否为升序。 |
join(otherDataset, [numTasks]) | 通过该方法可以按照 K 来将源数据集合与另一数据集合进行 join 操作。(K, V) 和 (K, W) join结果就是 (K,(V,W))。outer join 就直接使用 leftOuterJoin,rightOuterJoin,fullOuterJoin 。 |
cogroup(otherDataset,[numTasks]) | 当在 (K, V) 类型与 (K, W)类型调用该方法时,会返回一个元祖 (K, (Iterable<V>, Iterable<W>)) 。也可以使用 groupWith 来调用。 |
cartesian(otherDataset) | 当在 T 类型与 U类型 的数据集上调用他, |