RDD是MLlib专用的数据格式,它参考了Scala函数式编程思想,并大胆引入统计分析概念,将存储数据转化成向量和矩阵的形式进行存储和计算,这样将数据定量化表示,能更准确地整理和分析结果。分为以下几类:

spark 关系型数据 spark的基本数据类型_大数据

1.本地向量集

主要由两类构成:稀疏型数据集(spares)和密集型数据集(dense)。

例如一个向量数据(9,5,2,7),按密集型数据格式可以被设定成(9,5,2,7)进行存储,数据集被作为一个集合的形式整体存储。

而对于稀疏型数据,可以按向量的大小存储为(4,Array(0,1,2,3), Array(9,5,2,7))。

2.向量标签

向量标签用于对MLlib中机器学习算法的不同值做标记。例如分类问题中,可以将不同的数据集分成若干份,以整型数0、1、2……进行标记,即程序的编写者可以根据自己的需要对数据进行标记。

3.本地矩阵

大数据运算中,为了更好地提升计算效率,可以更多地使用矩阵运算进行数据处理。

例如一个数组Array(1,2,3,4,5,6),将其分为2行3列的矩阵。

4.分布式矩阵 

一般来说,采用分布式矩阵进行存储的情况都是数据量非常大的。MLlib提供了四种分布式矩阵存储形式,均由支持长整形的行列数和双精度浮点型的数据内容构成。这四种矩阵分别为:行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵最常用是前三种。
1)行矩阵

行矩阵是以行作为基本方向的矩阵存储格式,列的作用相对较小。可以将其理解为行矩阵是一个巨大的特征向量的集合。 每一行就是一个具有相同格式的向量数据,且每一行的向量内容都可以单独取出来进行操作

2)带有行索引的行矩阵

为了方便在系统调试的过程中对行矩阵的内容进行观察和显示,MLlib提供了另外一个矩阵形式,即带有行索引的行矩阵。
3)坐标矩阵

坐标矩阵是一种带有坐标标记的矩阵。其中的每一个具体数据都有一组坐标进行标示,其类型格式如下:
(x:Long, y:Long, value:Double)

坐标矩阵一般用于数据比较多且数据较为分散的情形,即矩阵中含0或者某个具体值较多的情况下。

从功能参数上看,这三个分布式矩阵依次增加,其功能也更加丰富。如果将其设为一二三级的话,高级可以向低级转换。