云计算与云存储 期末复习

本文详述了Spark中的RDD特性,包括弹性、创建方式和算子分类。重点介绍了转换算子,如Map、filter、groupBy等,并讨论了行动算子。此外,还涵盖了云计算的基础知识,如私有云、公有云、社区云的区别,以及云计算的特点。
摘要由CSDN通过智能技术生成

目录

1.RDD弹性特征  

2.创建RDD的四种方式

3.RDD算子分为两种:转换型和行动型。

4.RDD计算执行顺序

5.私有云、公有云、社区云的区别

6.云计算的特点

7.转换算子

8.宽依赖窄依赖 解释 举例说明

9.WordCount

10.缓存和检查点的区别

转换算子

行动算子


1.RDD弹性特征  

  •  存储的弹性:内存与磁盘的自动切换;
  • 容错的弹性:数据丢失可以自动恢复;
  • 计算的弹性:计算出错重试机制;
  • 分片的弹性:可根据需要重新分片。

2.创建RDD的四种方式

  • 从已有的数据集(集合)创建RDD
  • 从外部数据源(如文件)创建RDD
  • 对已有的RDD进行转换操作创建RDD
  • 通过RDD之间的操作来创建RDD

3.RDD算子分为两种:转换型和行动型。

    转换:功能的补充和封装,将旧的RDD包装成新的RDD。

    行动:触发任务的调度和作业的执行。

4.RDD计算执行顺序

rdd的计算一个分区内的数据是依次执行逻辑的,只有前面的数据执行完全部逻辑后,才会执行下一个数据。一个分区内的数据的执行是有序的。不同分区的数据执行顺序是无序的。一个分区的情况:

val lineRdd = sc.makeRDD(List(1, 2, 3, 4),1)

        val rdd1 = lineRdd.map(

            num =>{

                println("-----------------"+num)

                num

            }

        )

        val rdd2 = rdd1.map(

            num =>{

                println("++++++++++++++++++"+num)

                num

            }

        )

        rdd2.collect()

2个分区的情况:

val lineRdd = sc.makeRDD(List(1, 2, 3, 4),2)

        val rdd1 = lineRdd.map(

            num =>{

                println("-----------------"+num)

                num

            }

        )

        val rdd2 = rdd1.map(

            num =>{

                println("++++++++++++++++++"+num)

                num

            }

        )

        rdd2.collect()

注解:分区为2的情况下,一个分区是1,2, 一个分区是3,4;对于一个分区来说,数据的执行是有序的,因此,1在2前面执行,3在4之前执行;但是不同分区的数据执行是无序的,因此1和3那个先执行是未知的。

5.私有云、公有云、社区云的区别

(1)私有云:

  • 私有云是指由单个组织或企业独立拥有、管理和维护的云计算基础设施。
  • 私有云通常部署在组织自己的数据中心或受信任的第三方数据中心,并且可以提供更高的数据安全和隐私控制。

(2)公有云:

  • 公有云是由第三方云服务提供商(如亚马逊AWS、微软Azure、谷歌云平台等)提供的云计算基础设施和服务。
  • 用户可以通过互联网访问公有云服务,按需购买计算能力、存储资源和其他服务,并且通常以按使用量付费。

(3)社区云:

  • 社区云是一种云计算模式,针对特定行业、共同体或利益相关者群体而设置。
  • 该模式允许不同组织共享云基础设施,并具有定制的特性以满足特定社区的需求,同时兼顾安全性、隐私性和合规性方面的考量。

6.云计算的特点

资源池化,弹性伸缩,安全可靠

7.转换算子

Map:

Zip:

sortBy:

val rdd = sc.makeRDD(List(("11", 2), ("1", 1), ("2", 3)), 2)

val sortRDD: RDD[(String, Int)] = rdd.sortBy(t => t._1)

sortRDD.collect().foreach(println)

(1,1)

(11,2)

(2,3)

val rdd = sc.makeRDD(List(("11", 2), ("1", 1), ("2", 3)), 2)

val sortRDD: RDD[(String, Int)] = rdd.sortBy(t => t._1.toInt)

sortRDD.collect().foreach(println)

(1,1)

(2,3)

(11,2)

groupByKey:

val rdd = sc.makeRDD(List(("a",1), ("a", 2),("a", 3),("b",1)),2)

val groupRDD: RDD[(String, Iterable[Int])] = rdd.groupByKey()

groupRDD.collect().foreach(println)

(b,CompactBuffer(1))

(a,CompactBuffer(1, 2, 3))

reduceByKey;

val lineRdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4, 1 , 2, 3, 1), 2)

val rdd1: RDD[(Int, Int)] = lineRdd.map((_, 1))

//(1,1), (2,1), (3,1), (4,1), (1,1), (2,1), (3,1), (1,1)

val rdd2: RDD[(Int, Int)] = rdd1.reduceByKey((t1,t2)=>t1+t2)

//        val rdd2: RDD[(Int, Int)] = rdd1.reduceByKey(_+_)

//(1,1), (1,1) , (1,1)=> (1,2), (1,1) => (1,3)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不科学的爆炸短发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值