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 算子,可以实现高效的分布式数据处理。