首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala到Java8 MLeap的转换

Scala到Java8 MLeap的转换
EN

Stack Overflow用户
提问于 2017-06-09 05:49:51
回答 2查看 817关注 0票数 3

我想使用MLeap来部署Spark ML机器学习模型,并使用它们来实时预测。

创建者发布了Scala教程,但我需要支持Java8代码库。

如何在Java 8中实现以下代码:

代码语言:javascript
复制
val pipeline = SparkUtil.createPipelineModel(uid = "pipeline", Array(featureModel, rfModel))

val sbc = SparkBundleContext()
for(bf <- managed(BundleFile("jar:file:/tmp/mnist.model.rf.zip"))) {
        pipeline.writeBundle.save(bf)(sbc).get
      }

val bundle = (for(bundleFile <- managed(BundleFile("jar:file:/tmp/simple-spark-pipeline.zip"))) yield {
  bundleFile.loadMleapBundle().get
}).opt.get
EN

回答 2

Stack Overflow用户

发布于 2017-07-20 18:10:29

如果您仅使用普通的Spark ML转换器,则可以使用SimpleSparkSerializer轻松地保存和加载模型。

保存:

代码语言:javascript
复制
new SimpleSparkSerializer().serializeToBundle(model, "jar:file:/tmp/model.zip", trainData);

正在加载:

代码语言:javascript
复制
Transformer model = new SimpleSparkSerializer().deserializeFromBundle("jar:file:/tmp/model.zip");
票数 2
EN

Stack Overflow用户

发布于 2019-12-27 08:16:03

你可以跳过加载spark,它是笨重的类,直接通过运行时加载。

代码语言:javascript
复制
private static Transformer kMeansModel;
private static MleapContext mleapContext;
private static BundleBuilder bundleBuilder;

public MLeapLocalService() throws IOException {
    mleapContext = new ContextBuilder().createMleapContext();
    bundleBuilder = new BundleBuilder();
    Resource res = resourceLoader.getResource("classpath:aihello.com/aimodels/kmeans-model.zip");
    kMeansModel = bundleBuilder.load(res.getFile(), mleapContext).root();
}

然后,您可以通过以下方式进行预测:

代码语言:javascript
复制
    LeapFrameBuilder builder = new LeapFrameBuilder();
    List<StructField> fields = new ArrayList<StructField>();
    fields.add(builder.createField("docs", builder.createString()));
    StructType schema = builder.createSchema(fields);
    List<Row> rows = new ArrayList<Row>();
    rows.add(builder.createRow(docs));
    DefaultLeapFrame frame = builder.createFrame(schema, rows);
    DefaultLeapFrame returnFrame = kMeansModel.transform(frame).get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44446133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档