带有火花的机器学习,数据准备性能问题,MLeap

时间:2019-07-03 14:14:04

标签: performance apache-spark machine-learning apache-spark-mllib scoring

我发现有关Mleap(库)的许多好评,该库可以快速评分。它基于模型工作,并转换为MLeap捆绑包。

但是在得分之前的数据准备阶段该怎么办?

是否有某种有效的方法可以将“火花ML数据准备管道”(在培训期间有效,但在spark框架中工作)转换为健壮的,性能有效的,优化的字节码?

1 个答案:

答案 0 :(得分:0)

您可以使用MLeap轻松地序列化整个PipelineModel(包含要素工程和模型训练)。

注意:以下代码有点旧,您现在可能可以访问更干净的API。

// Mleap PipelineModel Serialization into a single .zip file
val sparkBundleContext = SparkBundleContext().withDataset(pipelineModel.transform(trainData))
for(bundleFile <- managed(BundleFile(s"jar:file:${mleapSerializedPipelineModel}"))) {
  pipelineModel.writeBundle.save(bundleFile)(sparkBundleContext).get
}

// Mleap code: Deserialize model from local filesystem (without any Spark dependency)
val mleapPipeline = (for(bf <- managed(BundleFile(s"jar:file:${modelPath}"))) yield {
  bf.loadMleapBundle().get.root
}).tried.get

请注意,棘手的部分是如果您在Spark中定义自己的Estimators / Transformers,因为它们也需要相应的MLeap版本。