Spark基础(RDD)(常用算子)

什么是RDD
RDD 是 Spark 的计算模型。RDD(Resilient Distributed Dataset)叫做弹性的分布式数
据集合
,是 Spark 中最基本的数据抽象,它代表一个不可变、只读的,被分区的数据集。
操作 RDD 就像操作本地集合一样,有很多的方法可以调用,使用方便,而无需关心底层的
调度细节。

RDD宽依赖:父RDD的分区被子RDD的多个分区使用 例如 groupByKey、reduceByKey、sortByKey等操作会产生宽依赖,会产生shuffle

RDD窄依赖:父RDD的每个分区都只被子RDD的一个分区使用 例如map、filter、union等操作会产生窄依赖

RDD的三种创建形式

  1. 集合并行化创建(通过 scala 集合创建) scala 中的本地集合—> spark RDD
    val arr = Array(1,2,3,4,5
    val rdd = sc.parallelize(arr)
    val rdd =sc.makeRDD(arr)
    通过集合并行化方式创建 RDD,适用于本地测试,做实验
  2. 读取外部文件系统,比如 HDFS 等
    val rdd2 = sc.textFile(“hdfs://hdp-01:9000/words.txt”)
    // 读取本地文件
    val rdd2 = sc.textFile(“file:///root/words.txt”) // 文件的前缀,可加可不加
  3. rdd之间的转换
    已存在的rdd,经过调用转换类的算子,生成一个新的rdd
    RDD上的算子
    主要分两类
    Transformation:延时计算,不会触发计算,懒加载
    lazy 执行的,并没有立即去执行,例如一些方法,map方法,仅仅是记录了传递的函数的操作。
    当transformation算子遇到action算子的时候,才开始触发任务的执行

每一次的transformation算子,都生成一个新的rdd。

Action:立即执行计算

每次遇到一个action,就会产生一个job。
要么把结果写入到文件系统中,要么把结果展示在driver端,要么把结果打印。
Application:
在每一个application中,有几个action,就会产生几个job。
常用算子

  1. Transformation 懒加载 不会将操作递交到集群
    map:返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成
    flatMap:压平操作,先map后flat
    filter:过滤(返回一个新的RDD,该RDD由经过func函数计算后返回值为true的输入元素组成)
    union:并集(对原RDD和参数RDD求并集后返回一个新的RDD)
    intersection:交集(对原RDD和参数RDD求交集后返回一个新的RDD)
    distinct:(对源RDD进行去重后返回一个新的RDD)
    groupBy:分组
    sortBy:排序

  2. Action
    collect:收集,将数据收集到Driver端
    saveAsTextFile:保存文件
    count:求个数
    first:第一个元素
    take:求集合中的n个元素
    foreach:对原来的rdd中的每隔元素,执行fun操作
    foreach和map的区别:
    1:foreach没有返回值,map有返回值
    2:foreach是action操作,会触发计算,map是tranformation操作

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值