Apache Spark MLlib 模型文件格式

Apache Spark MLlib Model File Format

A​​pache Spark MLlib 算法(例如,决策树)将模型保存在创建两个目录的位置(例如,myModelPath),即。 myModelPath/datamyModelPath/metadata。这些路径中有多个文件,这些文件不是文本文件。有一些格式为 *.parquet 的文件。

我有几个问题:

Spark >= 2.4

由于 Spark 2.4 提供了与格式无关的编写器接口,并且选定的模型已经实现了这些接口。例如 LinearRegressionModel:

val lrm: org.apache.spark.ml.regression.LinearRegressionModel = ???
val path: String = ???

lrm.write.format("pmml").save(path)

将创建一个包含单个文件的目录,其中包含 PMML 表示。

Spark < 2.4

What are the format of these files?

  • data/*.parquet 个文件采用 Apache Parquet 列存储格式
  • metadata/part-* 看起来像 JSON

Which file/files contain actual model?

  • model/*.parquet

Can I save the model to somewhere else, for example in a DB?

我不知道有任何直接方法,但您可以将模型作为数据框加载,然后将其存储在数据库中:

val modelDf = spark.read.parquet("/path/to/data/")
modelDf.write.jdbc(...)