Spark常用算子分析与应用---复习

本文深入探讨了Spark的算子,包括转换算子如map、flatMap、mapPartitions、glom、union、groupBy、filter、distinct和cache,以及行动算子如foreach、saveAsTextFile、collect、reduceByKey和join。通过实例分析,展示了如何使用这些算子处理数据,强调了算子在简化编程复杂性和提高易用性上的关键作用。
摘要由CSDN通过智能技术生成

一、算子概述

  • 什么是算子
    从狭义上来说是指一个函数空间到另一个函数空间(或它自身)的映射,广义上来说是指一个空间到另一个空间的映射。通俗点来说就是指事物(数据或函数)从一个状态到另一个状态过程的抽象
    实质就是映射,就是关系,就是变换。
  • 算子的重要作用
    1、算子越少灵活性就越低,则实现相同功能的编程复杂度越高,算子越多反之
    2、算子越少,表现力越差,面对复杂场景则易用性较差,算子越多的则反之
  • MapRreduce与Spark算子比较
    MapReduce只有2个算子,Map和Reduce,绝大多数应用场景下,均需要复杂编码才能达到用户需求
    Spark有80多个算子,进行充分的组合应用后,能满足绝大多数的应用场景

二、Spark算子介绍与应用

1、算子分类

1.1、转换算子
此种算子不触发提交作业,只有作业被提交后才会真正启动转换计算。

  • Value型转换算子:其处理的数据项是Value型
    输入分区与输出分区一对一型:map算子、flatMap算子、mapPartitions算子、glom算子
    输入分区与输出分区多对一型:union算子、cartesian算子
    输入分区与输出分区多对多型:groupBy算子
    输出分区为输入分区子集型:filter算子、distinct算子、subtract算子、sample算子、takeSample算子
    Cache型:cache算子、persist算子

  • Key-Value型转换算子:其处理的数据是Key-Value型
    输入分区与输出分区一对一:mapValues算子
    对单个RDD聚集:combineByKey算子、reduceByKey算子、partitionBy算子
    对两个RDD聚集:cogroup算子
    连接:join算子、leftOutJoin算子、rightOutJoin算子

1.2、行动算子

此算子会触发SparkContext提交作业

  • 无输出(是指不输出hdfs、本地文件当中):foreach算子
  • HDFS:saveAsTextFile算子、saveAsObjectFile算子
  • Scala集合和数据类型:collect算子、collectAsMap算子、reduceByKeyLocally算子、lookup算子、count算子、top算子、reduce算子、fold算子、aggregate算子

2、常用算子分析与应用

2.1、Value型转换算子

  • 1)map

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值