MLPipelineによって作成された何千ものモデルを保存しようとしています。回答に示されているように ここ 、モデルは次のように保存できます。
import Java.io._
def saveModel(name: String, model: PipelineModel) = {
val oos = new ObjectOutputStream(new FileOutputStream(s"/some/path/$name"))
oos.writeObject(model)
oos.close
}
schools.Zip(bySchoolArrayModels).foreach{
case (name, model) => saveModel(name, Model)
}
モデルを最終的にAmazons3に保存したいので、s3://some/path/$name
と/user/hadoop/some/path/$name
を使用しようとしましたが、どちらもパスが見つからないことを示すメッセージで失敗します。
モデルをAmazonS3に保存する方法は?
モデルをHDFSに保存する1つの方法は、次のとおりです。
// persist model to HDFS
sc.parallelize(Seq(model), 1).saveAsObjectFile("hdfs:///user/root/linReg.model")
保存されたモデルは、次のようにロードできます。
val linRegModel = sc.objectFile[LinearRegressionModel]("linReg.model").first()
詳細については、( ref )を参照してください。
Apache-Spark 1.6
およびScala
APIでは、トリックを使用せずにモデルを保存できます。 MLライブラリのすべてのモデルにはsave
メソッドが付属しているため、これは LogisticRegressionModel で確認できます。実際、このメソッドがあります。ちなみに、モデルをロードするには、静的メソッドを使用できます。
val logRegModel = LogisticRegressionModel.load("myModel.model")
したがって、FileOutputStream
は(hadoopライブラリを介さずに)ローカルファイルシステムに保存するため、ローカルディレクトリに保存することがこれを行う方法です。そうは言っても、ディレクトリが存在する必要があるので、最初にディレクトリが存在することを確認してください。
そうは言っても、モデルによっては、 https://spark.Apache.org/docs/latest/mllib-pmml-model-export.html (pmml export)を確認することをお勧めします。