大数据之 spark 算子

Apache Spark 提供了两种主要类型的算子:Transformation(转换)和Action(动作)。这些算子是Spark的核心功能,用于处理分布式数据集(RDD或DataFrame/Dataset)。

1. Transformation 算子

  • Lazy Evaluation(惰性求值) - Transformation算子不会立即执行,而是在遇到Action算子时触发一个完整的计算过程。
    • map(func): 对RDD中的每个元素应用函数func进行转换。
    • flatMap(func): 类似于map,但是返回的是一个序列,因此结果是一个扁平化的RDD。
    • filter(func): 根据给定的条件函数过滤出满足条件的元素。
    • groupBy(keyFunc, valueFunc): 按照keyFunc的结果对RDD进行分组,并可以对每个分组应用valueFunc进一步转换。
    • join(otherDataset, [joinExprs]): 将两个RDD按指定键进行连接操作。
    • union(otherDataset): 合并两个RDD。
    • distinct(): 返回RDD中所有不重复的元素。

2. Action 算子

  • Eager Evaluation(及早求值) - Action算子会触发实际的计算,并将结果返回到驱动程序或者写入外部存储系统。
    • collect(): 获取整个RDD的所有元素,并作为一个数组返回到驱动程序。
    • count(): 计算RDD中元素的数量。
    • first(): 获取RDD的第一个元素。
    • take(n): 获取RDD的前n个元素。
    • reduce(func): 使用一个二元函数对RDD中的元素进行聚合操作,返回单个结果。
    • saveAsTextFile(path): 将RDD的内容以文本文件的形式保存在HDFS或其他支持的文件系统上。
    • foreach(func): 对RDD中的每个元素执行一个函数操作,通常用于副作用操作,如打印、写入数据库等。

对于DataFrame/Dataset API,Spark SQL提供了更多特定于结构化数据的操作,例如:

  • select(exprs): 选择列或者基于现有列创建新列。
  • where(cond): 过滤行。
  • groupBy(cols): 按指定列进行分组。
  • agg(exprs): 在分组后进行聚合操作。

请注意,上述内容适用于Spark 2.x版本,而在Spark 3.x中,API可能有更新和改进。在实际使用时,请查阅最新的Spark官方文档以获取最新信息。

相关推荐

  1. 数据 spark 算子

    2024-01-25 11:38:01       31 阅读
  2. 数据存储与处理技术Spark

    2024-01-25 11:38:01       30 阅读
  3. 数据 Spark 比 MapReduce 快的原因

    2024-01-25 11:38:01       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 11:38:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 11:38:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 11:38:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 11:38:01       20 阅读

热门阅读

  1. npm install出错的各种情况

    2024-01-25 11:38:01       28 阅读
  2. Flink状态应用测试程序示例

    2024-01-25 11:38:01       33 阅读
  3. 躲避陷阱的优雅之舞:职场误区深度解析

    2024-01-25 11:38:01       38 阅读
  4. [VulnHub靶机渗透] CTF7

    2024-01-25 11:38:01       51 阅读
  5. 如何在 Python 中将语音转换为文本

    2024-01-25 11:38:01       27 阅读
  6. npm ERR! code CERT_HAS_EXPIRED & errno CERT_HAS_EXPIRED

    2024-01-25 11:38:01       30 阅读
  7. C#-Lambda 表达式

    2024-01-25 11:38:01       27 阅读
  8. 鸿蒙开发笔记(二十七): 交互事件--手势

    2024-01-25 11:38:01       27 阅读
  9. MySQL内外连接

    2024-01-25 11:38:01       33 阅读
  10. 安全合规之漏洞扫描的重要意义

    2024-01-25 11:38:01       39 阅读
  11. Python系列(5)—— 作用域

    2024-01-25 11:38:01       32 阅读