零基础入门大数据挖掘之spark的rdd

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/on2way/article/details/84348172

本节简单介绍一下spark下的基本数据结构RDD,方便理解后续的更多操作。

那么第一个问题,什么是rdd。我们知道,大数据一般存储在分布式集群里面,那么你在对其进行处理的时候总得把它读出来吧,读出来后总得把它存成某种格式的文件吧,就好比编程语言里面的,这个数据是数组,那么你可以以数组的格式操作它,直接索引下标访问之类的,如果这个数据链表,那么你可以用另外的形式访问它。那么很自然的,你用语言读取数据后,它总得是某种格式的数据吧,那么在大数据的不同框架里面,形成的数据格式不一样,在spark里面,有好几种存储格式,其中使用最为广泛的是rdd格式,也就是数据读取以后以rdd格式的数据存储在内存里面。

rdd的全称:Resilient Distributed Dataset,字面翻译为弹性分布式数据集。

  • 什么是弹性?所谓弹性,就是比较灵活的意思,怎么个灵活法呢,比如读进来的数据可根据大小或者人为设定选择性的存储在内存里面或者磁盘里面,从而影响后续处理速度。比如一个数据如果出现问题,会进行特定次数的尝试处理看是否还可以处理。比如rdd里面可以存储任意类型的数据,int,double,string或者是混合的等等。比如数据读进来是存储几份,怎么分区,都可以根据大小等自动设置。这就是灵活,相当于里面进行了很多优化,让读进来的大数据集适用于较多的特殊情况。
  • 什么是分布式呢?这个很好理解,就是分布式存储在不同机器上。代码里面你可能看到就一行代码表示某个数据,但是这个数据实际上是存在多台机器上的。
  • 数据集,每一个rdd都是一系列相似的数据组成的集合。

理解了rdd是什么再来看看它能干什么。

我们说rdd就是spark框架里面的一种基本数据结构,就好比任何编程语言里面具有数组array这种数据结构一样。有了数据结构,那么就会有针对这种数据结构相对应的操作方法。比如python编程环境,假设a是一个,字符串类型数据,那么a可能就有很多操作方法,比如a.length,a.split等等。同理,rdd也有很多类似的操作方法。这样不同的数据之间,如果它们都是rdd的话,那么操作它们就方便统一了,这是rdd最大的作用。

知道了rdd是spark框架的基本数据结构,再来看看这种数据结构都有哪些方法可以用。

一个rdd主要就是两种类型的方法可用,一种是转换类型的算子:Transformation,一种是行为类型的算子:Action。什么意思,慢慢介绍。

所谓转换类型的算子,直观的理解就是处理类的算子。比如前两节我们介绍并使用过的map方法,这些都是处理类的算子,使用这种算子,就是对rdd中的每个元素进行一定的转换处理操作,也是用的最多的。所谓行为类的算子,就是类似聚合,收集数据,保存数据,显示数据等等,比如上节的reduce方法,把所有的结果汇总起来。有一点可以比较明显的区分是:rdd经过转换算子后依然是rdd,而经过行为算子后,多数都不再是rdd了。

最后先列举一下常见的转换算子与行为算子:

Transformation算子

map()
filter()
flatMap()
sample()
union()
groupByKey()
reduceByKey()
join()
groupWith()
cartesian()
...

Action算子

reduce()
collect()
take()
fist()
saveAsTextFile()
saveAsSequenceFile()
...

后续会在慢慢介绍。

带图讲解全面的spark算子: Spark常用算子讲解

猜你喜欢

转载自blog.csdn.net/on2way/article/details/84348172