Size: a a a

2019 May 15

AY

Aleksey Yakushev in Data Engineers
Правильно ли понимаю, что с помощью  JPMML-SparkML можно конвертировать модель из Spark в XML файл PMML и далее его использовать в отрыве от Spark?
источник

AZ

Anton Zadorozhniy in Data Engineers
Aleksey Yakushev
Правильно ли понимаю, что с помощью  JPMML-SparkML можно конвертировать модель из Spark в XML файл PMML и далее его использовать в отрыве от Spark?
С некоторыми оговорками да, PMML это переносимый формат моделей которые можно использовать в другим инструментах или выставлять через тот же openscoring для сервинга
источник

AZ

Anton Zadorozhniy in Data Engineers
у этого варианта много ограничений / caveats если строить большой ML service, но как вариант быстро выставить одноразовую модель - может подойти
источник

AS

Andrey Smirnov in Data Engineers
Aleksey Yakushev
Добрый день, подскажите как реализовать задачу.
Сразу скажу, опыта не много, только учусь.
Имеется обученная модель кластеризации на Spark. И теперь необходимо её использовать в режиме «онлайн». Т.е. приходит фрагмент данных, необходимо прогнать его через модель и вернуть класс. Внешнее приложение на scala.
Пока вижу решение в использовании play, т.е. запаковывается jar приложение, отправляется на Spark кластер, там оно запускается, делает подготовки, через Spark загружает модель(и) и ждёт по http внешних обращений. Далее всё просто, получили данные для обраотки, пргнали через модель и вернули наружу результаты.
Или подобно принято(удобно) решать каким-то другим образом?
нормальная тема, мы так делали, только вместо play была akka-http
источник

AY

Aleksey Yakushev in Data Engineers
спасибо, pmml + openscoring конечно очень интересно, вот тут вместе расписано https://openscoring.io/blog/2016/07/04/sparkml_realtime_prediction_rest_approach/ но несколько тоже избыточно для моей простой задачи. Попробую пока akka-http
источник

AZ

Anton Zadorozhniy in Data Engineers
Aleksey Yakushev
спасибо, pmml + openscoring конечно очень интересно, вот тут вместе расписано https://openscoring.io/blog/2016/07/04/sparkml_realtime_prediction_rest_approach/ но несколько тоже избыточно для моей простой задачи. Попробую пока akka-http
кмк пммл намного проще: 1) сохранить модельку в файл 2) поднять готовый спринг бут сервис https://github.com/openscoring/openscoring 3) зарегистрировать в нем модель хоть курлом 4) профит
источник

AY

Aleksey Yakushev in Data Engineers
п.2. по сути это
java -jar openscoring-server-executable-${version}.jar
и всё ? это для меня наиболее сложный пункт во всей цепочке (с TomCat работал 9 лет назад и с java в чистом виде тоже)
источник

AZ

Anton Zadorozhniy in Data Engineers
Aleksey Yakushev
п.2. по сути это
java -jar openscoring-server-executable-${version}.jar
и всё ? это для меня наиболее сложный пункт во всей цепочке (с TomCat работал 9 лет назад и с java в чистом виде тоже)
да
источник

AY

Aleksey Yakushev in Data Engineers
тогда буду пробовать
источник

КБ

Константин Белов in Data Engineers
пытаюсь разорхивировать файл в zip, обычнаә гугловскаә задачка, а он не хочет, че делатғ ?
источник

КБ

Константин Белов in Data Engineers
источник

GG

George Gaál in Data Engineers
Константин Белов
пытаюсь разорхивировать файл в zip, обычнаә гугловскаә задачка, а он не хочет, че делатғ ?
команда?
источник

AS

Andrey Star in Data Engineers
Всем доброго дня!

Никто не сталкивался с проблемой при использования спарка (2.4.1) с игнайтом (2.7.0)

Код:
dataFrame.write
     .format(FORMAT_IGNITE)
     .option(OPTION_CONFIG_FILE, CONFIG)
     .option(OPTION_TABLE, s"cache_${search.id}")
     .option(OPTION_CREATE_TABLE_PRIMARY_KEY_FIELDS, "id")
     .option(OPTION_CREATE_TABLE_PARAMETERS, "template=replicated")
     .save()

Ошибки:

Cо стороны спарка
2019-05-15 15:07:34,725 ERROR tcp.TcpDiscoverySpi: Failed to unmarshal discovery data for component: 1
class org.apache.ignite.IgniteCheckedException: Failed to deserialize object with given class loader: org.apache.spark.util.MutableURLClassLoader@6f89f665
...
Caused by: java.io.InvalidClassException: javax.cache.configuration.MutableConfiguration; local class incompatible: stream classdesc serialVersionUID = 201405, local class serialVersionUID = 201306200821

Со стороны игнайта
[15:07:36,886][SEVERE][tcp-disco-msg-worker-#2][TcpDiscoverySpi] Failed to unmarshal discovery data for component: 1
class org.apache.ignite.IgniteCheckedException: Failed to deserialize object with given class loader: sun.misc.Launcher$AppClassLoader@764c12b6
...
Caused by: java.io.InvalidClassException: javax.cache.configuration.MutableConfiguration; local class incompatible: stream classdesc serialVersionUID = 201405, local class serialVersionUID = 201306200821

Гугл говорит о возможных проблемах с версионностью cache-api, но jar-ники с двух сторон одинаковые.
источник

ДШ

Дмитрий Шмыглёв in Data Engineers
Andrey Star
Всем доброго дня!

Никто не сталкивался с проблемой при использования спарка (2.4.1) с игнайтом (2.7.0)

Код:
dataFrame.write
     .format(FORMAT_IGNITE)
     .option(OPTION_CONFIG_FILE, CONFIG)
     .option(OPTION_TABLE, s"cache_${search.id}")
     .option(OPTION_CREATE_TABLE_PRIMARY_KEY_FIELDS, "id")
     .option(OPTION_CREATE_TABLE_PARAMETERS, "template=replicated")
     .save()

Ошибки:

Cо стороны спарка
2019-05-15 15:07:34,725 ERROR tcp.TcpDiscoverySpi: Failed to unmarshal discovery data for component: 1
class org.apache.ignite.IgniteCheckedException: Failed to deserialize object with given class loader: org.apache.spark.util.MutableURLClassLoader@6f89f665
...
Caused by: java.io.InvalidClassException: javax.cache.configuration.MutableConfiguration; local class incompatible: stream classdesc serialVersionUID = 201405, local class serialVersionUID = 201306200821

Со стороны игнайта
[15:07:36,886][SEVERE][tcp-disco-msg-worker-#2][TcpDiscoverySpi] Failed to unmarshal discovery data for component: 1
class org.apache.ignite.IgniteCheckedException: Failed to deserialize object with given class loader: sun.misc.Launcher$AppClassLoader@764c12b6
...
Caused by: java.io.InvalidClassException: javax.cache.configuration.MutableConfiguration; local class incompatible: stream classdesc serialVersionUID = 201405, local class serialVersionUID = 201306200821

Гугл говорит о возможных проблемах с версионностью cache-api, но jar-ники с двух сторон одинаковые.
Разные serial version - значит библиотека, которую ты используешь на драйвере и та, которая на нодах - разные
Надо убедиться что они одинаковые - что за библиотека - не могу сказать - странное имя класса, возможно версия скалы?
источник

AS

Andrey Star in Data Engineers
Дмитрий Шмыглёв
Разные serial version - значит библиотека, которую ты используешь на драйвере и та, которая на нодах - разные
Надо убедиться что они одинаковые - что за библиотека - не могу сказать - странное имя класса, возможно версия скалы?
используется cache-api-1.0.0.jar.. проверил манифесты, даже время билда одинаковое..

В самом джарнике вижу 201306200821, откуда берется вторая цифра - вопрос, над которым бьюсь уже второй день(
источник

ДШ

Дмитрий Шмыглёв in Data Engineers
1. Не факт что проблема с cache-api
источник

ДШ

Дмитрий Шмыглёв in Data Engineers
Он ругается на stream classdesc
источник

ДШ

Дмитрий Шмыглёв in Data Engineers
2. У тебя клаудера или Хортон?
источник

ДШ

Дмитрий Шмыглёв in Data Engineers
Посмотри в spark ui - с какими зависимостями ты запучкаешься - надо сверить то, что на драйвере и то, что на ноде
источник

ДШ

Дмитрий Шмыглёв in Data Engineers
Я такое видел когда запускал Спарк на клаудеровском кластере с зависимостью от обычного спарка
источник