spark笔记

本文是Spark的学习笔记,涵盖了Spark概览、RDD编程及其操作,包括map、filter、flatMap等转化操作,以及count、take、collect等行动操作。此外,还详细讲解了RDD的持久化缓存策略,通过persist()实现数据缓存,提升计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark学习笔记1:Spark概览

Spark是一个用来实现快速而通用的集群计算的平台
笔记1简单介绍了Spark以及Spark的各种组件
Spark Core、Spark SQL、Spark Streaming、Spark MLlib等

Spark学习笔记2:RDD编程

一个简单的单词计数的例子来开始介绍RDD编程

Spark对数据的操作无外乎创建RDD,转化已有RDD以及调用RDD操作进行求值

RDD编程:

1、创建RDD的两种方法
A、SparkContext.textFile()用来读取文本文件作为一个字符串RDD
B、把程序中一个已有的集合传给SparkContext的parallelize()方法

2、RDD操作:转化操作和行动操作

常见转化操作有:

map()操作用于接收一个函数,把这个函数用于RDD中的每个元素,将函数的返回结果作为结果RDD中对应元素的值。如 val counts = words.map(word =>(word,1)) 将每一个单词单词映射成键值对。
filter()接受函数,将RDD中满足该函数的元素放入新的RDD中返回。
flatMap()被分别应用到输入RDD的每个元素上,返回的是一个包含各个迭代器可访问的所有元素的RDD。可以用于将输入的字符串切分成单词。
集合操作:distinct() 生成只包含不同元素的新RDD, union(other)返回一个包含两个RDD中所有元素的RDD , intersection(other)只返回两个RDD中都有的元素,subtract(other)返回只存在于第一个RDD而不存在于第二个RDD中的元素,cartesian(other)笛卡儿积,返回所有可能的(a,b)对,a,b分别来自两个不同的RDD。

常见的行动操作有:

count()用来返回计数结果
take(n)用来收集RDD中的n个元素
collect()用来获取整个RDD中的元素
reduce()用来接收一个函数作为参数,这个函数要操作两个相同元素类型的RDD数据并返回一个同样类型的新元素。 如 val sum = rdd.reduce( (x,y) => x+ y ) 用于计算输入集合中元素的和。
fold() 和reduce()的区别是需要指定一个初始值作为每个分区第一次调用的结果。如 val sum = rdd.fold(1)(_ + _)
aggregate()函数不同于fold()和reduce(),不要求返回值类型必须与所操作的RDD类型相同,使用aggregate()时需要提供返回类型的初始值。

持久化缓存

Spark在每次调用行动操作时都会重算RDD以及它的所有依赖,为了避免多次计算同一个RDD,可以让Spark对数据进行持久化

使用persist()用来把数据以序列化的形式缓存,默认情况下会缓存在JVM的堆空间中

unpersist()用于手动把持久化的RDD从缓存中移除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值