繁体   English   中英

将mllib决策树模型保存到hdfs

[英]Saving a mllib decision tree model to hdfs

我有一个针对一组数据训练的Mllib决策树模型。 我希望能够在必要时保存和加载经过训练的模型。例如,假设我对一百万行数据集进行了训练并将其保存以备将来使用。 我发现使用FileInputStream,FileOutputStream,ObjectInputStream,ObjectOutputStream可以保存和加载线性模型,因为它们将这些构造函数公开如下。

您可以按以下方式将模型保存到磁盘:

import java.io.FileOutputStream 
import java.io.ObjectOutputStream 
val fos = new FileOutputStream("e:/model.obj") 
val oos = new ObjectOutputStream(fos)   
oos.writeObject(model)   
oos.close

并加载到:

import java.io.FileInputStream 
import java.io.ObjectInputStream 
val fos = new FileInputStream("e:/model.obj") 
val oos = new ObjectInputStream(fos) 
val newModel = oos.readObject().asInstanceOf[org.apache.spark.mllib.classification.LogisticRegressionModel]

上面的语句在句法上也确实适用于DecisionTree,但是我不能调用newModel.predict(),因为Decision Tree构造函数显然没有公开。

现在有人可以保存和加载诸如DecisionTree,RandomForest,SVM等模型吗?

您可以在模型上使用.save方法将其存储为实木复合地板文件,并通过.load将其加载到伴随对象上。 将其保存为Parquet文件,这应该比使用普通的Java序列化(通常很慢)要快。

请参阅https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.util.Saveable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM