将 mllib 决策树模型保存到 hdfs
Saving a mllib decision tree model to hdfs
我有一个基于一组数据训练的 Mllib 决策树模型。我希望能够在 necessary.e.g 时保存和加载经过训练的模型。假设我训练百万行数据集并保存以备将来使用。我发现使用 FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream 我可以保存和加载线性模型,因为它们使这些构造函数 public 如下所示。
您可以将模型保存到磁盘,如下所示:
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(),因为显然 public 没有创建决策树构造函数。
现在有人知道我如何保存和加载决策树、RandomForest、SVM 等模型吗?
您可以在模型上使用 .save
方法将其存储为 parquet 文件并通过 .load
在伴随对象上加载它。将其保存为镶木地板文件,这应该比使用普通 java 序列化更快,后者通常很慢。
见https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.util.Saveable
我有一个基于一组数据训练的 Mllib 决策树模型。我希望能够在 necessary.e.g 时保存和加载经过训练的模型。假设我训练百万行数据集并保存以备将来使用。我发现使用 FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream 我可以保存和加载线性模型,因为它们使这些构造函数 public 如下所示。
您可以将模型保存到磁盘,如下所示:
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(),因为显然 public 没有创建决策树构造函数。
现在有人知道我如何保存和加载决策树、RandomForest、SVM 等模型吗?
您可以在模型上使用 .save
方法将其存储为 parquet 文件并通过 .load
在伴随对象上加载它。将其保存为镶木地板文件,这应该比使用普通 java 序列化更快,后者通常很慢。
见https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.util.Saveable