Spark

Spark 数据抽象 弹性分布式数据集RDD(Resilient

2022-06-07  本文已影响0人  Eqo

实现思想

与MR实现思想一致 分而治之的思想,在Spark计算引擎中,思想与MapReduce一样,但是将输入数据、处理数据和输出数据封装抽象,称为RDD(弹性分布式数据集),便于对数据管理和对数据操作方便(调用RDD 函数即可)。


image.png

1、Hive框架: 数据封装在Table表
2、Spark:数据封装在RDD集合
3、Flik: 数据封装在DataStream集合

RDD概念

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变可分区、里面的元素可并行计算的集合

三个主要特质

image.png

五个重要特性

image.png
查看源码发现有五个重要特性
前3个特性,必须包含的;后2个特性,可选的。
1.每个RDD由一系列的分区partition分区组成,一个RDD有多个分区(分区组成)

2.对RDD中数据处理时,每个分区(分片)数据使用RDD的函数进行处理,1个分区数据被1个Task处理(分片计算,分布式计算)

3.每个RDD依赖于一系列其他RDD( 依赖一些列 RDD,RDD的数据容灾恢复)

image.png

RDD每次转换都会产生一个的新的RDD,所以rdd之间会产生前后依赖关系
在部分分区丢失的时候,spark 可以根据依赖关系 把数据恢复出来(spark容错机制)

4.可选 当RDD中数据类型为Key/Value(二元组),可以设置分区器Partitioner() 把数据重新分配

5.可选 对RDD中每个分区数据进行计算时,找到最佳位置列表
对数据计算时,考虑数据本地性,数据在哪里,尽量将Task放在哪里,快速读取数据进行处理

RDD两种创建方式

并行化集合parallelize
外部存储textFile

小文件数据的处理

第一种,将小文件合并成一个大文件
第二种,使用SparkContext中提供:wholeTextFiles方法,专门读取小文件数据。
将每个文件作为一条KV存储在RDD中,K:文件名的绝对路径,V:文件的内容
用于解决小文件的问题,可以将多个小文件变成多个KV,自由指定分区个数

image.png
上一篇下一篇

猜你喜欢

热点阅读