美文网首页Spark
Spark 数据抽象 弹性分布式数据集RDD(Resilient

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

作者: Eqo | 来源:发表于2022-06-07 22:36 被阅读0次

实现思想

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


image.png

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

RDD概念

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

  • Resilient 弹性
    代表集合当中的数据有容灾恢复功能,因为 多个rdd存在依赖关系 当我一个rdd 挂掉之后 我通过我的父rdd 就是直接前驱 根据 rdd的算子(逻辑)能够恢复
  • distribute 分布式
    集合当中的数据划分为很多部分根据分区规则
  • dataset 数据集
    表示是一个不可变的集合,里面的数据不允许增加或者修改

三个主要特质

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

相关文章

网友评论

    本文标题:Spark 数据抽象 弹性分布式数据集RDD(Resilient

    本文链接:https://www.haomeiwen.com/subject/andemrtx.html