【问题标题】:Machine learning with spark, data preparation performance problem, MLeap使用 Spark 进行机器学习,数据准备性能问题,MLeap
【发布时间】:2019-11-14 06:14:06
【问题描述】:
我发现很多关于 Mleap 的好评 - 一个允许快速评分的库。它基于模型工作,转换为 MLeap 包。
但是评分前的数据准备阶段呢?
是否有一些有效的方法可以将“spark ML 数据准备管道”(在训练期间工作,但在 spark 框架中)转换为稳健、性能有效、优化的字节码?
【问题讨论】:
标签:
performance
apache-spark
machine-learning
apache-spark-mllib
scoring
【解决方案1】:
您可以使用 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 版本。