Apache Spark 是一个开源的数据处理框架,支持分布式数据计算。在 Spark 中,数据通常被以 RDD(弹性分布式数据集) 的形式存储,通过 Transformation(转换)算子Action(行动)算子 进行处理。

Transformation算子

这些算子用于创建新的 RDD,操作是惰性计算,仅在后续 Action 算子调用时执行。

1. map(func):对每个元素应用一个函数,返回应用后的结果集。

2. filter(func):过滤满足条件的元素。

3. flatMap(func):允许每个元素映射到多个输出元素。

4. mapPartitions(func):对每个分区应用一个函数,返回一个迭代器。

5. mapPartitionsWithIndex(func):类似 mapPartitions,增加了分区索引。

6. mapWith(func):对分区中的元素进行处理,接收分区索引的函数。

7. flatMapWith(func):类似 flatMap,包含分区索引。

8. mapValues(func):应用于键值对中值,保持原键。

9. flatMapValues(func):映射每个值到多个输出。

10. sample(withReplacement, fraction, seed):按照比例随机采样。

11. union(otherDataset):返回当前 RDD 与另一个 RDD 的并集。

12. intersection(otherDataset):返回两个 RDD 的交集。

13. distinct([numTasks]):去重处理。

14. groupByKey([numTasks]):对键值对的值进行分组。

Action算子

通过触发实际计算并返回最终结果。

1. reduce(func):合并 RDD 中的元素。

2. collect():将 RDD 中的元素拉回到本地。

3. count():计算 RDD 中的元素数量。

4. first():返回第一个元素。

5. take(n):获取前 n 个元素。

6. takeSample(withReplacement, n, seed):返回一个随机采样。

7. takeOrdered(n, key=None):返回排序后的前 n 个元素。

8. saveAsTextFile(path):将 RDD 保存到文件。

9. saveAsSequenceFile(path):将 RDD 存储为序列文件。

10. saveAsObjectFile(path):保存为对象文件。

11. countByKey():统计每个键的数量。

12. foreach(func):对每个元素应用一个函数。

以上操作使得 Spark RDD 提供了灵活而强大的数据处理方式。通过合理使用 Transformation 和 Action 算子,可以实现高效的分布式数据处理。