Мы пытаемся найти способ загрузить обученную модель Spark (2.x) ML, чтобы по запросу (через интерфейс REST) мы могли запросить ее и получить прогнозы, например. http://predictor.com:8080/give/me/predictions?a=1,b=2,c=3
Существуют готовые библиотеки для загрузки модели в Spark (учитывая, что она была сохранена где-то после обучения с использованием MLWritable), а затем использовать ее для прогнозов, но кажется излишним обернуть ее в задание и запускать это для каждого запроса/вызова из-за к инициализации SparkContext.
Однако использование Spark имеет то преимущество, что мы можем сохранить нашу конвейерную модель и выполнять те же преобразования функций без необходимости реализовывать ее за пределами SparkContext.
Немного покопавшись, мы обнаружили, что spark-job-server потенциально может помочь нам в этом. проблема, позволяя нам инициализировать «горячий» искровой контекст для сервера заданий, и, следовательно, мы можем затем обслуживать запросы, вызывая задание прогнозирования (и получая результаты) в существующем контексте с использованием искрового задания-сервера. РЕСТ API.
Является ли это лучшим подходом к API-ify прогноза? Из-за пространства признаков мы не можем заранее предсказать все комбинации.
В качестве альтернативы мы думали об использовании Spark Streaming и сохранении прогнозов в очереди сообщений. Это позволяет нам не использовать spark-job-server, но не упрощает общий процесс. Кто-нибудь пробовал подобный подход?