Подтвердить что ты не робот

Как сохранить модели от ML Pipeline до S3 или HDFS?

Я пытаюсь спасти тысячи моделей, выпущенных ML Pipeline. Как указано в ответе здесь, модели можно сохранить следующим образом:

import java.io._

def saveModel(name: String, model: PipelineModel) = {
  val oos = new ObjectOutputStream(new FileOutputStream(s"/some/path/$name"))
  oos.writeObject(model)
  oos.close
}

schools.zip(bySchoolArrayModels).foreach{
  case (name, model) => saveModel(name, Model)
}

Я пробовал использовать s3://some/path/$name и /user/hadoop/some/path/$name, так как я хотел бы, чтобы модели были сохранены в amazon s3 в конечном итоге, но они оба не работают с сообщениями, указывающими, что путь не найден.

Как сохранить модели на Amazon S3?

4b9b3361

Ответ 1

Один из способов сохранить модель для HDFS выглядит следующим образом:

// persist model to HDFS
sc.parallelize(Seq(model), 1).saveAsObjectFile("hdfs:///user/root/linReg.model")

Сохраненная модель затем может быть загружена как:

val linRegModel = sc.objectFile[LinearRegressionModel]("linReg.model").first()

Подробнее см. ref)

Ответ 2

Так как Apache-Spark 1.6 и в API Scala вы можете сохранить свои модели, не используя никаких трюков. Поскольку все модели из библиотеки ML имеют метод save, вы можете проверить это в LogisticRegressionModel, действительно, этот метод, Кстати, для загрузки модели вы можете использовать статический метод.

val logRegModel = LogisticRegressionModel.load("myModel.model")

Ответ 3

Итак, FileOutputStream сохраняет локальную файловую систему (не через библиотеки hadoop), поэтому сохранение в локальном каталоге - это способ сделать это. При этом каталог должен существовать, поэтому сначала убедитесь, что каталог существует.

В зависимости от вашей модели вы можете посмотреть https://spark.apache.org/docs/latest/mllib-pmml-model-export.html (экспорт pmml).