这是SVM文件格式例子:
1 1:2 2:3 3:4
2 1:1 2:2 3:3
1 1:1 2:3 3:3
1 1:3 2:1 3:3
需要注意以下几点:
1)标签列可以重复
2)索引要从1开始,从0开始的时候生成的内部索引时从-1开始,而且数据长度会比实际少1;
3)数据的长度是以最大列数为准的,因此最好是要保持数据列数一致;
Scala的MLib支持的本地数据的类型主要是整数和浮点数,因为MLib主要是用来计算。而向量数据和数学上的向量是对应的。
下面是测试代码:
def DoTestA9(): Unit ={ var theConf = new SparkConf().setMaster("local").setAppName("testRDDMethod") var theSC = new SparkContext(theConf) var theMU = MLUtils.loadLibSVMFile(theSC,"d://lbl11.txt") theMU.foreach(println(_)) }
从上面的例子也可以看出,文件的读取是需要用到SparkContext的,如果每个spark节点的文件名和存储路径都一样,就可以实现分布式的访问或者存储。