开发者学堂课程【大数据 Spark2020最新课程(知识精讲与实战演练)第一阶段:RDD 入门_RDD 是什么】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/688/detail/11950
RDD 入门_RDD 是什么
课题引入:
对 spark 入门案例进行细节补充说明。之前课程中编写使用的 API 均为编程模型,此模型被称为 rdd ,了解 rdd 入门的过程即为之前所学算子、编程模式的解答。
若要了解 rdd 主要有两方面: rdd 的概念; rdd 的代码。
内容介绍:
一、RDD 的概念
二、RDD 的代码
一、RDD 的概念
.RDD 在哪
示例代码:
object wordcount {
def main(args:util.Arrays[String]):Unit ={
//1.创建 sparkcontext
val conf=new
sparkconf().setmaster(“local[6]”) .setappname(“word_count”)
val sc = new sparkcontext(conf)
//2.加载文件
//①准备文件
//②读取文件
val rdd1=sc.textFile(path= “dataset/wordcount.txt”)
//3.处理
//①把整句话拆分为多个单词
val rdd2=rdd1.flatmap(item=>item.split(regex= “”))
//②把每个单词指定一个词频1
val rdd3=rdd2.map(item=> (item,1))
//③聚合
val rdd4=rdd3.reduceByKey((curr,agg)=>curr+agg)
//4.得到结果
val result=rdd4.collect()println(result)
主要步骤中的 rdd1 补全类型为 val rdd1:RDD[String] 中,文件放有字符串所以为 String ,rdd2,rdd3,rdd4 补全同理。
.RDD 是什么
由此可为 RDD 下定义:
全称 resilient Distributed Datasets(弹性分布式数据集),是一个容错的,并行的数据结构,可让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。
1.rdd 是数据集:
使用 textFile api 通过路径对应的文件读取其中内容生成 rdd 即 rdd 保存该文件的数据。
2.rdd 是编程模型:
rdd1 对象的类型为 rdd 而 rdd1 可以调用 flatmap 来进行相应的算子的编写因而称它为编程模型。
rdd 相互之间存在依赖关系:
对于 rdd1 而言,它使用 flatmap 生成 rdd2 ,以此类推,它们彼此之间均存在关系。
3.rdd 是可以分区的:
mapreduce 为一个运行的计算框架,它是并行的计算框架的原因是 mapreduce 经常访问 HDFS 的文件处理, HDFS 本身可区分,rdd 可以访问很多数据源获取数据如: HDFS;HBase;Cassandra。
对于 rdd 访问 HDFS 文件,rdd 可分区, HDFS 当中文件可区分,在 HDFS 中存有 wordcount.txt 文件,分为三个 block ,rdd 也应具备同时处理这三个 block 的能力。
首先 rdd 需进行自行的分区,
如图所示:
且在一般情况下 rdd 支持外部分区,即 HDFS 存在几个分区, rdd 相应存在等量分区。
RDD 的特点:
rdd 是数据集;rdd 是编程模型;rdd 相互之间存在依赖关系;rdd 是可以分区的。