2016-07-19 12 views
1

にベクトルのスパーク書く私は、次ののJava読むとHDFS

public void writePointsToFile(Path path, FileSystem fs, Configuration conf, 
     List<Vector> points) throws IOException { 

    SequenceFile.Writer writer = SequenceFile.createWriter(conf, 
      Writer.file(path), Writer.keyClass(LongWritable.class), 
      Writer.valueClass(Vector.class)); 

    long recNum = 0; 

    for (Vector point : points) { 
     writer.append(new LongWritable(recNum++), point); 
    } 
    writer.close(); 
} 

(私はまだそれをテストすることはできません行うための正しい方法を使用していることを確認していない)

としてのベクトルの (org.apache.spark.mllib.linalg.Vector) HDFSに書きました

今度はJavaRDD<Vector>というファイルを読む必要があります。なぜならSpark Clustering K-meanで使用したいからですが、これを行う方法がわからないからです。

答えて

0

SparkはHadoop SequenceFilesの読み込みを直接サポートしています。あなたはその後、ちょうどJavaRDD<Vector>JavaPairRDD<LongWritable, Vector>を変換する必要があり

JavaSparkContext sc = new JavaSparkContext(conf); 
JavaPairRDD<LongWritable, Vector> input = 
    sc.sequenceFile(fileName, LongWritable.class, Vector.class); 

:あなたのような何かをするだろう。

JavaRDD<Vector> out = input.map(new Function<Tuple2<LongWritable, Vector>, Vector>() { 

    @Override 
    public Vector call(Tuple2<LongWritable, Vector> tuple) throws Exception { 
     return tuple._2(); 
    } 
}); 
+0

あなたの答えをありがとう、あなたはJavaRDD にJavaPairRDD を変換する方法を私にしてください伝えることができますか。? – Emad

+0

マップ関数の例を追加してJavaRDD –

関連する問題