Spark系列之(一)——SparkRDD

1.SparkContext对象

在这里插入图片描述

2.RDD创建

2.1 并行化集合创建

在这里插入图片描述
本地集合:list,dict类似的东西
实例代码如下图所示:
在这里插入图片描述

2.2 读取外部数据源

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.算子

3.1 算子概念

算子:分布式集合对象上的API叫算子
方法/函数:本地对象的API叫方法函数

3.2 算子分类

Transformation:转换算子
Action:行动算子
在这里插入图片描述
在这里插入图片描述

4.常用Transformation算子

4.1 map算子

在这里插入图片描述

4.2 flatMap算子

在这里插入图片描述

4.3 reduceByKey算子

## 4.2 flatmap算子

4.4 mapValues算子

在这里插入图片描述
与map区别:
在这里插入图片描述

4.5 groupBy算子

在这里插入图片描述
实际代码:
在这里插入图片描述

4.6 fileter算子

在这里插入图片描述
实例代码:
在这里插入图片描述

4.7 distinct算子

在这里插入图片描述
实例代码:
在这里插入图片描述

4.8 union算子

在这里插入图片描述

4.9 join算子

在这里插入图片描述
对于join算子来说,关联条件按照二元元组的key来进行
实例代码:
在这里插入图片描述

4.10 intersection算子

在这里插入图片描述

4.11 glom算子

在这里插入图片描述
实例代码:
在这里插入图片描述
glom嵌套后,如果要解嵌套,使用flatmap算子,但不想要map的话,传一个lambda就可以实现,示例代码如下:
在这里插入图片描述

4.12 groupByKey算子

在这里插入图片描述
与groupBy(可传分组逻辑函数)相比,groupByKey是按照K来分组,针对kv形数据
,返回数据时,groupBy返回的迭代对象是每一个对象,而groupByKey返回的迭代对象是每一个对象的V值。

4.13 sortBy算子

在这里插入图片描述
实例代码:
在这里插入图片描述
==注意:==如果要全局有序,排序分区数需要设置为1,如果设置为3,只能保证3个分区的局部有序

4.14 sortByKey算子

在这里插入图片描述
实例代码:
在这里插入图片描述

5.常用Action算子

5.1 countByKey算子

在这里插入图片描述
==注:==action算子返回的不是rdd,所以在result中不用使用.collect就能输出结果

5.2 collect算子

在这里插入图片描述

5.3 reduce算子

在这里插入图片描述

5.4 fold算子

在这里插入图片描述

5.5 first算子

在这里插入图片描述

5.6 take算子

在这里插入图片描述

5.7 top算子

在这里插入图片描述

5.8 count算子

在这里插入图片描述

5.9 takeSample算子

在这里插入图片描述
==注:==是否重复和数据值无关,与数据位置有关

5.10 takeOrder算子

在这里插入图片描述
==注:==参数2只是提供根据什么返回,不影响数据本身

5.10 foreach算子

在这里插入图片描述

5.11 saveAsTextFile算子

在这里插入图片描述

6.分区操作算子

6.1 mapPartitions算子

在这里插入图片描述
实例代码如下:
在这里插入图片描述

6.2 foeachPartitions算子

在这里插入图片描述

6.3 partitonBy算子

在这里插入图片描述
实例代码如下:
在这里插入图片描述

6.4 repartiton算子

在这里插入图片描述
coalesce算子也可以重分区,但是如果增加分区,那么必须明确给出shuffle=True
在这里插入图片描述

7.groupByKey与reduceByKey的区别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8 RDD的持久化

8.1 RDD的数据是过程数据

在这里插入图片描述

8.2 RDD缓存

在这里插入图片描述
在这里插入图片描述

8.3 RDD CheckPoint

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.广播

在这里插入图片描述
在这里插入图片描述
问题点: list的传输导致内存的浪费和多余的网络开销
在这里插入图片描述
在这里插入图片描述
注: 如果将list转为RDD,RDD分区后必然会使用JOIN(shuffle),shuffle会大大降低效率。

10.累加

没有累加器的代码显示
在这里插入图片描述
输出结果:12345,12345,0,没有将分区结果相加

有累加器的代码:
在这里插入图片描述
==累加器的注意事项:==如果后续还有调用,累加器的值不会返回初始值,解决方案就是将中间RDD缓存下
在这里插入图片描述

11 广播和累加器的案例

在这里插入图片描述

  • 实现代码:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值