怎么理解RDD中的算子,算子有几类

RDD 算子分类及功能

转换算子 (TRANSFORMATION)

转换算子的主要作用是对现有的 RDD 数据进行加工处理并返回一个新的 RDD。这些操作不会立即执行,而是通过惰性求值的方式延迟计算直到遇到行动算子为止。

  • 基本概念:
    转换算子的核心在于创建新的 RDD 并对其进行封装以扩展其功能1。常见的转换算子包括但不限于 mapfilterflatMapgroupByKey

  • 分区级操作: 部分算子支持基于整个分区的操作而非逐条记录操作。例如 mapPartitions() 可用于一次性处理一个完整的分区数据集合而不是单独的数据项2。这种设计可以减少频繁调用函数带来的开销,从而提高性能。

  • 重分区调整: 使用 repartition(numPartitions) 或者更底层的 coalesce(numPartitions, shuffle=true/false) 方法能够改变原始 RDD 的分区数目。当需要增加或者减少分区数量时非常有用3。注意这里涉及到全局洗牌(shuffle),因此可能会带来较大的网络传输成本。

行动算子 (ACTION)

行动算子则负责触发实际的任务运行流程并将最终结果反馈给驱动程序或保存到外部存储系统中去。

  • 定义说明:
    它们标志着一系列先前定义好的转化过程结束,并促使 Spark 开始真正的物理运算阶段1。典型的例子有 collect(), count(), reduce() 等等。

  • 具体实例展示

    
    

    scala

    // 创建初始RDD val dataRDD = sparkContext.makeRDD(Array(10, 20, 30), 2) // 应用action操作获取总数目 println(dataRDD.count()) // 对每个元素应用lambda表达式后收集全部结果至本地列表形式查看 println(dataRDD.map(_ * 2).collect().toList)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值