假设文件中数据的保存格式为:每行为一个样本数据,并由‘,’分隔。如:a.txt
1,2,3,4,5,6
9,3,4,5,7,7
5,2,5,2,7,8
- 第一步:读取数据并切分,将每行数据从String转换成Array;此时,data的数据类型为
RDD[Array[T]]
data = sc.textFile("a.txt").map(_.split("\\s+")
- 第二步:将data转换成二维数组
Array[Array[T]]
,并读取行数和列数
val Array_data = data.collect()
val rows = Array_data.length
val cols = Array_data(0).length
- 第三步:将其平铺成一维数组
第四步:从一维数组创建Breeze矩阵
import breeze.linalg._
val mat = new DenseMatrix(cols,rows,flattenArray).t
- 由于平铺成一维数组与创建二维矩阵的方式(按行或按列)正好相反,因此在创建二维矩阵时需要交换行数和列数,并在最后把矩阵转置即可。