Scala 将mllib决策树模型保存到hdfs

Scala 将mllib决策树模型保存到hdfs,scala,apache-spark,apache-spark-mllib,Scala,Apache Spark,Apache Spark Mllib,我有一个基于一组数据的Mllib决策树模型。我希望能够在必要时保存和加载经过训练的模型。假设我对百万行数据集进行训练,并将其保存以备将来使用。我发现使用FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream可以保存和加载线性模型,因为它们将这些构造函数公开,如下所示 您可以按以下方式将模型保存到磁盘: import java.io.FileOutputStream import java.io.ObjectOu

我有一个基于一组数据的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(),因为决策树构造函数显然没有公开


现在有人知道我如何保存和加载DecisionTree、RandomForest、SVM等模型了吗?

您可以在模型上使用
.save
方法将其存储为拼花文件,并通过
将其加载到伴生对象上。这样就可以将其保存为拼花文件,这应该比使用普通java序列化要快,因为普通java序列化通常比较慢