赞
踩
Apache Spark 的核心组件之一是弹性分布式数据集(Resilient Distributed Dataset,简称 RDD)。RDD 是 Spark 中不可变、分布式对象集合的抽象,它允许你在集群上执行各种转换(transformations)和动作(actions)。以下是 RDD 的一些基础算子(operators)的概述,这些算子被分为转换(transformations)和动作(actions)两类。
转换是定义新的 RDD 的操作,这些操作是惰性的,即它们不会立即执行计算,而是创建一个新的 RDD 等待后续的动作触发真正的计算。
map(func):返回一个新的 RDD,该 RDD 由源 RDD 中的每个元素经过函数 func
转换后组成。
flatMap(func):类似于 map
,但每个输入项可以映射到 0 个或多个输出项(因此 flatMap
通常用于将列表或其他集合展平为 RDD)。
filter(func):返回一个新的 RDD,该 RDD 包含源 RDD 中满足函数 func
的所有元素。
mapPartitions(func):类似于 map
,但独立地在 RDD 的每一个分区上运行,因此 func
的类型为 Iterator[T] => Iterator[U]
而不是 T => U
。
mapPartitionsWithIndex(func):类似于 mapPartitions
,但还为 func
提供了分区的索引。
sample(withReplacement, fraction, seed):使用指定的随机种子随机抽样数据,可以选择是否放回抽样。
union(otherRDD):返回一个新的 RDD,该 RDD 是源 RDD 和 otherRDD
的并集。
intersection(otherRDD):返回一个新的 RDD,该 RDD 是源 RDD 和 otherRDD
的交集。
distinct([numPartitions])):返回一个新的 RDD,该 RDD 包含源 RDD 中的唯一元素。
groupBy(func):返回一个新的 RDD,该 RDD 的键是通过将源 RDD 的每个元素应用函数 func
得到的,值是一个迭代器,包含源 RDD 中所有产生相同键的元素。
reduceByKey(func, [numPartitions]):在具有相同键的元素上应用函数 func
并返回结果 RDD。
aggregateByKey(zeroValue)(seqOp, combOp, [numPartitions]):使用给定的聚合函数组合每个键的值。
sortByKey([ascending=True], [numPartitions]):根据键的升序或降序对 RDD 进行排序。
join(otherRDD, [numPartitions]):当两个 RDD(具有相同类型的键)的键相同时,返回一个新的 RDD,其中包含通过连接这两个 RDD 的值得到的元组。
cogroup(otherRDD, [numPartitions]):对于一对 RDDs,返回一个(key,(iterable, iterable))的 RDD。
动作是触发计算并将结果返回给驱动程序或写入外部存储系统的操作。
collect():将 RDD 中的所有元素作为数组返回给驱动程序。
count():返回 RDD 中的元素数量。
take(n):返回 RDD 中的前 n 个元素。
saveAsTextFile(path):将 RDD 中的元素保存为文本文件。
saveAsSequenceFile(path):将 RDD 中的元素保存为 Hadoop SequenceFile。
saveAsObjectFile(path):将 RDD 中的元素序列化为对象文件。
foreach(func):对 RDD 中的每个元素执行函数 func
。
reduce(func):使用函数 func
(接受两个参数并返回一个值)将 RDD 中所有元素归约为一个元素。
first():返回 RDD 中的第一个元素。
takeOrdered(n, [ordering]):返回 RDD 中最大的 n 个元素,根据可选的排序函数进行排序。
countByValue():返回 RDD 中每个唯一值出现的次数。
lookup(key):在键值对 RDD 中,返回与给定键关联的所有值(仅适用于键值对 RDD)。
掌握这些 RDD 的基础算子对于理解和使用 Spark 是非常重要的。这些算子提供了丰富的数据处理和计算功能,使得 Spark 成为一个强大且灵活的分布式计算框架。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。