Spark ml: возможно ли сохранить обученную модель в PySpark и читать из кода Java Spark? - PullRequest
0 голосов
/ 09 марта 2019

У меня есть задание PySpark, которое обрабатывает входные данные и обучает модель логистической регрессии. Мне нужно как-то перенести эту обученную модель в рабочий код, написанный на Java Spark. После загрузки этой обученной модели из кода Java она передаст функции для получения прогноза из модели.

Со стороны PySpark я использую API-интерфейс dataframe (spark.ml), а не mllib.

Можно ли сохранить обученную (встроенную) модель в файл и прочитать ее обратно из кода Java Spark? Если есть лучший способ, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Да, это возможно.За одним исключением SparkR, который требует дополнительных метаданных для загрузки модели, все собственные модели ML (независимо от пользовательских расширений гостевого языка) могут быть сохранены и загружены с произвольным внутренним интерфейсом.

Просто сохраните MLWritable объект на одной стороне, используя метод save или его записывающее устройство (write) и загрузите обратно с совместимым Readable на другой стороне.Допустим, в Python:

from pyspark.ml.feature import StringIndexer

StringIndexer(inputCol="foo", outputCol="bar").write().save("/tmp/indexer")

и в Scala

import org.apache.spark.ml.feature.StringIndexer

val indexer = StringIndexer.load("/tmp/indexer")
indexer.getInputCol
// String = foo

При этом модели ML, как правило, являются плохим выбором для производственного использования, и существуют более подходящие варианты - Какслужить модели Spark MLlib? .

0 голосов
/ 09 марта 2019

Добро пожаловать на SO.Вы пытались это сделать?В общем, оно должно работать - если вы сохраните модель spark.ml, вы можете загрузить ее с помощью spark из любого языка, поддерживающего spark.В любом случае, Логистическая регрессия - это простая модель, поэтому вы можете просто сохранить ее веса в виде массива и воссоздать его в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...