林子雨-5.1 RDD编程基础

本文深入解析Spark中的弹性分布式数据集(RDD),涵盖RDD的创建、操作(Transformation和Action)、持久化、分区策略及综合实例,是Spark核心概念的全面指南。

目录

1、RDD属于Spark Core

2、RDD的创建

文件加载

通过并行集合(数组)创建RDD

3、RDD的操作(Transformation)

filter(func):高阶函数→参数是函数

map(func):一对一的映射

flatmap(func):

groupByKey():应用于键值对

reduceByKey(func)

4、RDD的操作(action)

count()

collect()

first()

take(n)

reduce(func)

foreach(func)

惰性机制

5、持久化

6、分区(作用和原则)

作用

分区原则

7、设置分区的方法

重分区

分区类型

自定义分区方法

8、综合实例


1、RDD属于Spark Core

spark核心:RDD

2、RDD的创建

文件加载

通过SparkContext对象的textFile()读取文件生成RDD

file:///表示读取本地文件

每一行都是RDD的一个元素

hdfs://localhost:9000/也可以简写为/

通过并行集合(数组)创建RDD

调用sc的parallelize方法

3、RDD的操作(Transformation)

当对一个RDD进行Trans操作时只会记录下操作,只有遇到action时才会真正执行程序

filter(func):高阶函数→参数是函数

map(func):一对一的映射

每个元素经过map操作后都生成了新的元素

flatmap(func):

groupByKey():应用于键值对

reduceByKey(func)

对分组得到的值列表再次进行func操作

4、RDD的操作(action)

动作类型操作才会执行真正的计算(包括加载)

count()

统计当前RDD的元素个数

collect()

以数组的方式把执行结果返回到driver端(程序发起的终端)

first()

take(n)

以数组形式返回

reduce(func)

foreach(func)

惰性机制

转换类型操作在遇到动作类型操作时才会进行从头到尾的计算

5、持久化

spark是基于内存的计算

用户可以把可能需要反复使用的数据集持久化到内存中,不持久化就是用完就扔,所以持久化可以大大提升程序运行效率。

两次动作操作导致整个程序被从头到尾计算了两次,数据被重复生成。

缓存的意义:第二次动作操作时只需要去使用第一次动作操作时缓存起来的值,避免重复计算。

?可以解释下图:

Job里有很多stage,stage里有很多task。

每一个动作类型都会生成一个Job

persist():对RDD标记持久化

并不会马上计算生成RDD并把它持久化

只有在遇到动作类型操作时才会真正持久化

.persist(n)

n有多个缓存级别

只放内存(会有新老更替)

其他缓存级别自行百度

移除持久化:unpersist

完整实例:

6、分区(作用和原则)

作用

分区原则

分区数=集群中的CPU核心数目

CPU的核数为8,分区也为8,对应产生8个线程,正好可以处理8个分区。

spark.default.parallelism

本地模式

默认为本地机器CPU的数目

local[N]为N

apache Mesos

没有设置时默认为分区数为8

standalone yarn

集群中所有核心数目总和与该参数的默认值比较,取较大值

7、设置分区的方法

重分区

.repartiton

分区类型

自定义分区方法

继承Partitioner并重写其以下几个方法

根据Key值的最后一位数字,写到不同的文件。

RDD自定义分区类只支持对键值对重分区,所以要把单RDD转成键值对RDD

分区后的文件数目等于分区数

8、综合实例

词频统计

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值