2017-09-08 4 views
0

Je code suivant:Spark ml streaming predictOnValues ​​comment enregistrer les résultats?

StreamingLinearRegressionWithSGD regressionWithSGD = 
     new StreamingLinearRegressionWithSGD() 
       .setInitialWeights(Vectors.zeros(featuresNumber)); 

JavaDStream<LabeledPoint> trainingData = streamingContext.textFileStream(model.getTrainPath()).map(LabeledPoint::parse).cache(); 
JavaDStream<LabeledPoint> testData = streamingContext.textFileStream(model.getPredictPath()).map(LabeledPoint::parse); 
regressionWithSGD.trainOn(trainingData); 
regressionWithSGD.predictOnValues(testData.mapToPair(lp -> new Tuple2<>(lp.label(), lp.features()))).print(); 

Je voudrais mettre les résultats à certains fichiers/db/file d'attente et ainsi de suite au lieu de print() est-il possible?

Répondre

0

Je l'ai pensé à elle

StreamingLinearRegressionWithSGD regressionWithSGD = 
       new StreamingLinearRegressionWithSGD() 
         .setInitialWeights(Vectors.zeros(featuresNumber)); 

     JavaDStream<LabeledPoint> trainingData = streamingContext.textFileStream(model.getTrainPath()).map(LabeledPoint::parse).cache(); 
     JavaDStream<LabeledPoint> testData = streamingContext.textFileStream(model.getPredictPath()).map(LabeledPoint::parse); 
     regressionWithSGD.trainOn(trainingData); 
     JavaDStream<Double> doubleJavaDStream=regressionWithSGD.predictOn(testData.map(labeledPoint -> labeledPoint.features())); 
     doubleJavaDStream.dstream().saveAsTextFiles("result","out"); 

Ainsi, en conséquence, nous obtenons result- {} horodatage .out dossiers.