2016-05-25 15 views
1

Scala APIを使用してSparkでシーケンスモデルを実行しています。Scala - Spark:結果をファイルに保存

model.freqSequences.collect().foreach { freqSequence => println(freqSequence.sequence.map(_.mkString("[", ", ", "]")).mkString("[", ", ", "]") + ", " + freqSequence.freq)} 

問題は結果が大きくなっていると(コレクト使用したくない)もうなく、どちらかHDFSまたはローカルでファイルに保存している:これは、結果を参照するには、コードの行です。私はこれを試しました:

scala> val outcome = model.freqSequences.foreach { freqSequence => println(freqSequence.sequence.map(_.mkString("[", ", ", "]")).mkString("[", ", ", "]") + ", " + freqSequence.freq)} 

scala> outcome.saveAsTextFile("tmp/outcome1/") 

error: saveAsTextFile is not a member of Unit 

結果はユニットであり、私はsaveAsTextFileを使用することができません。この結果を保存するための他の方法はありますか? Txs。

+0

可能な複製(http://stackoverflow.com/questions/33027767/save-ml-model-for-future-usage) –

答えて

0

foreachは、Unitを返します。

最初にmapStringにしたいので、ファイルとして保存することができます。何かのように:[将来の使用のために保存MLモデル]の

val outcome = model.freqSequences.map { freqSequence => freqSequence.sequence.map(_.mkString("[", ", ", "]")).mkString("[", ", ", "]") + ", " + freqSequence.freq} 
// print 
outcome.foreach(println) 
// save 
outcome.saveAsTextFile("tmp/outcome1/") 
+0

outcome.foreach( printIn)は、複数のノードを使用して正しい結果を提供しない可能性があります。これは大きなデータセットに適用されるので、collect()を使わなくてもoutcome.take(number).foreach(printIn)を使うとより良い結果が得られます。 –

関連する問題