将模型导入应用程序

本文讨论 Databricks ML 模型导出工作流的导入和评分部分;请参阅导出Apache Spark ML 模型和管道,了解工作流的导出部分。

若要使用通过 Databricks ML 模型导出导出的模型,请在库 dbml-local 中调用 API。 此库提供用于导入模型和执行低延迟评分(预测或推理)的 Scala 和 Java API。

在 Java 应用程序中使用已保存的模型

假设已导出逻辑回归管道,并将其保存在 my_models/lr_pipeline 下。 可以使用 ModelFactory 从已保存的模型的目录创建 LocalModel,并对新数据进行评分。

// Load exported model
String modelPath = "my_models/lr_pipeline";
LocalModel model = ModelFactory.loadModel(modelPath);

// The model input is a standard JSON string.
// The input schema here is: [origLabel: Double, features: Vector].
String input =
  "{\"origLabel\":-1.0," +
  "\"features\":{\"type\":0,\"size\":13," +
  "\"indices\":[0,2,3,4,6,7,8,9,10,11,12]," +
  "\"values\":[74.0,2.0,120.0,269.0,2.0,121.0,1.0,0.2,1.0,1.0,3.0]}" +
  "}";

// The model output is also a standard JSON string, with the expected output fields.
String output = model.transform(input);

输入接受 Apache Spark 数据集和数据帧使用 Dataset.toJSON 方法生成的相同 JSON 格式(请参阅数据集 API 文档)。 有关更多详细信息,请参阅 dbml-local API 文档

在 Maven 中指定 dbml-local 库依赖项

可以像指定其他依赖项一样,使用 Maven 坐标指定应用程序的 dbml-local 库依赖项。 下面的代码片段举例说明了如何在 Maven 项目 pom.xml 生成文件中包含 dbml-local

<!-- Add repository for dbml-local dependency -->
 <repositories>
   <repository>
     <snapshots>
       <enabled>false</enabled>
     </snapshots>
     <id>bintray-databricks-maven</id>
     <name>bintray</name>
     <url>https://dl.bintray.com/databricks/maven</url>
   </repository>
 </repositories>

 <dependencies>
   <!-- Main dependency for Model Scoring -->
   <dependency>
     <groupId>com.databricks</groupId>
     <artifactId>dbml-local</artifactId>
     <version>0.2.2-spark2.2</version>
   </dependency>
 </dependencies>

下载 dbml-local JAR

可以从 bintray 获取 dbml-local JAR。

dbml-local 许可证

dbml-local 库发布在 MIT 许可证下。

示例应用程序

可以查看一个非常简单的示例应用程序,该应用程序演示了如何在 databricks-ml-examples Github 存储库中使用 Databricks ML 模型导出助理库 dbml-local。 此演示包含用于训练和导出 MLlib 模型的 Databricks 笔记本。 这些笔记本与简单的 Java 应用程序配对,它们显示了如何导入模型并进行预测。