一颗蔬菜

我虽是只猫却也常常思考

MLib的数据格式

  • 本地向量(local vector)
  • 标签数据(labeled point)
  • 本地矩阵(local matrix)
  • 分布式矩阵(distriuted matrix)
本地向量
  • 本地向量使存储在本地节点上的,其基本数据类型是Vector。其有两个子集,分别是密集的和稀疏的,我们一般使用Vectors工厂类来生成,例如:
  • Vectors.dense(1.0,2.0,3.0) 密集矩阵
  • Vectors.dense(3,(0,1),(1,2),(2,3)) 稀疏矩阵
标签数据
  • 标签数据主要用于监督学习,监督学习的数据形式是(X,Y),其中X是特征向量,Y是标签。标签数据也是一样:
  • LabeledPoint(1.0,Vectors.dense(1.0,2.0,3.0)),参数1为标签,参数2为特征向量。
本地矩阵
  • 与向量相似,本地矩阵类型为Matrix,分为稠密矩阵和稀疏矩阵两种。同样使用工厂方法Matrices来生成。但是要注意,MLlib的矩阵是按照列存储的。下面创建一个3*3的单位矩阵:
  • Matrices.dense(3,3,Array(1,0,0,0,1,0,0,0,1)) // 创建稠密矩阵
  • 1  0  0
    0  1  0
    0  0  1
分布式矩阵
  • 分布式矩阵意为把一个矩阵数据存储到多个RDD中。将分布式矩阵进行数据转换需要全局的shuffle函数,最基本的分布式矩阵是RowMatrix.

Spark的分布式数据集

  • Spark的分布式数据集主要有三种,RDD、DataSet、DataFrame。三者在一定程度上可以相互转化,都有各自的适用范围。其中RDD是最为基础和简单的一种数据集形式。
  • RDD(Resilient Distributed Datasets),弹性分布式数据集,是Spark中结构最简单,也是最常用的一类数据集形式。可以理解为把数据数据进行简单封装之后形成的内存数据的抽象。数据格式为n行1列。
  • Dataset和RDD相比,引入了列的概念,这一点类似与一个EXCEL文件结构。类似于一个简单的二维表。数据格式为n张>=2列。
  • DataFrame结构与Dataset是类似的,都引入了列的概念。与Dataset不同的是,DataFrame中的每一行都再次被封装为Row的对象。需要改对象的方法来获取到具体的值。

发表评论

正在加载 Emoji