Обзор Spark Summit Europe 2016

Spark Summit Europe прошел в Брюсселе, Бельгия, всего неделю назад. Мне было приятно быть там в дни конференций, где я в основном посещал направление Data Science, так как это наш хлеб с маслом в Semantive. Этот саммит можно описать двумя словами: Spark 2.0 и Streaming, так как это была самая горячая тема на сессиях.

Конференция открылась основным докладом Матея Захарии о функциях Spark 2.0 и о том, насколько он быстр благодаря Catalyst Optimizer, который может значительно оптимизировать все преобразования, если они выполняются с использованием SQL, DataFrames или Datasets. RDD не выигрывают от оптимизации, потому что вы можете выполнить произвольный код в своих функциях, чтобы Spark не знал, что происходит, тогда как, если вы используете DataFrames и фильтруете, Spark знает об операции фильтрации, поэтому он может использовать это знание для оптимизации. исполнение.

Первый основной доклад завершился тем, что Грег Оуэн продемонстрировал отличную демонстрацию Spark Streaming, которая обрабатывала твиты, связанные с Brexit, и выполняла анализ настроений для каждого твита. Мы посмотрели на популярность твитов, в которых упоминались такие термины, как #theresa, #boris и, как ни странно, #marmite (темная пикантная паста из дрожжевого экстракта и растительного экстракта), которую так любят британцы. настроение, и оно оказалось более популярным, чем ожидалось, в отношении твитов Brexit.

Что интересно в демонстрации, так это то, что анализ настроений был выполнен просто в конвейере scikit-learn, обученном до демонстрации. Такое сочетание scikit-learn и Spark — хорошая комбинация, когда у вас есть обученная модель, которую вы просто применяете к огромному количеству входящих данных.

На следующей сессии Ион Стойка рассказал об истории Spark и будущем, которое связано с потоковой передачей, принятием решений в реальном времени и безопасностью данных. Проекты, которые должны реализовать эту технологию, — это Drizzle и Opaque. Подробнее об этом здесь.

Сеансы, которые мне больше всего нравятся:

  • Переходим на другой язык: профилактическое обслуживание железнодорожных стрелочных переводов
  • Вегас, недостающая библиотека MatPlotLib для Spark
  • OrderedRDD: структура анализа распределенных временных рядов для Spark.
  • Исследование улучшений производительности Apache Spark 2.0 с помощью Flame Graphs
  • Экстремально масштабные рекламные технологии с использованием Spark и Databricks в MediaMath
  • Прогнозирование как услуга с моделью ансамбля, обученной в SparkML, на 1 миллиарде наблюдаемых цен на рейсы ежедневно

И вот мои ключевые выводы из каждого из них:

Переключение

Крис Пул и Йерун Влек из Телеведущего рассказали о своем недавнем проекте для голландского железнодорожного субподрядчика Strukton. Дело в том, что вам нужно, чтобы стрелочные переводы, которые двигают рельсы, работали. В противном случае вы получите задержки и отмены поездов. Голландская железная дорога придерживается политики вознаграждения и штрафов, так что субподрядчик получает вознаграждение, когда все работает нормально, и штраф, если возникают неисправности. В конце концов, лучше заменить или отремонтировать потенциально неисправный выключатель, чем платить штраф.

У ведущего были данные о переключателях, собранные с датчиков. Они должны были предсказать сбой коммутатора, используя эти данные, которые случаются один или два раза в год. Они придумали простую модель, но не упрощенную, потому что клиент хотел на самом деле понять все функции, поэтому они использовали действительно простые функции, которые представляют собой временные ряды флипа, такие как минимум, максимум, среднее значение, длина на каждый сегмент кривой флипа. Модель также должна была быть понятной, поэтому они использовали модель дерева решений, которая объяснима и может быть визуализирована. Они использовали Spark для подготовки всех данных, обучения моделей и выполнения прогнозов. Они нормализовали данные с помощью скользящего окна, чтобы не отбрасывалась сезонность. Весь проект сейчас — это просто MS-SQL и Spark.

Вегас, недостающая библиотека MatPlotLib для Spark

Ребята из Нетфликс представили графическую библиотеку Vegas, которая декларативна, так что большая часть добра выходит из коробки и сделана для Scala. Они основывали свое решение на Vega, которая представляет собой JS-библиотеку для построения графиков. Vegas можно использовать с ноутбука Zeppelin или консоли Scala. Он имеет встроенную поддержку временных рядов и, конечно же, поддержку Spark. Диаграммы выглядят хорошо, так что просто взгляните на их документы!

OrderedRDD: платформа анализа распределенных временных рядов для Spark

Это был забавный пример, представленный Ларисой Сойер из Two Sigma Investments. Она представила библиотеку Flint для работы с данными временных рядов, позволяющую эффективно выполнять временные соединения. Временное соединение — это соединение, которое просто соответствует критериям с течением времени и может смотреть вперед или назад, чтобы найти совпадение. По сравнению с spark-ts, Flint может работать с временными рядами, которые не умещаются на одной машине, и имеет поддержку потоковой передачи.
TimeSeriesRDD, новый RDD, поставляемый с Flint, сохраняет временной порядок, чтобы данные временных объединений остаются в порядке, поэтому сортировка и перетасовка не требуются. Это дает ускорение в 50–100 раз по сравнению с работой только со стандартными RDD и данными временных рядов.
И что в этом смешного? Ну, именно так Лариса представляла и шутила о трейдинге на основе твитов Энн Хэтэуэй.

Исследование улучшений производительности Apache Spark 2.0 с помощью Flame Graphs

Это напомнило мне о моем времени в CERN. Лука Канали рассказал, как пламенные графики могут помочь вам исследовать, где расходуются циклы процессора. Эта техника требует некоторого опыта, чтобы знать, на что смотреть, но если вы это сделаете, то сможете понять, что происходит. Взгляните на ресурсы по графикам пламени Брендана Грегга, чтобы узнать больше.

Экстремально масштабные рекламные технологии с использованием Spark и Databricks в MediaMath

Прасад Чаласани представил действительно впечатляющее использование Spark для оптимизации ставок в рекламных кампаниях, что максимизирует показы, такие как клики по объявлениям или посещения страниц. У них есть огромные объемы данных, так как существует более 200 миллиардов рекламных возможностей в день, 1 миллиард пользователей, миллионы функций, и все это в сумме составляет до терабайт данных в день.

Прогнозирование как услуга с ансамблевой моделью, обученной в SparkML, по 1 миллиарду наблюдаемых цен на рейсы в день

Еще одну масштабную презентацию провел Йозеф Хабданк из Infare Solutions. Йозеф говорил о прогнозировании стоимости авиабилетов. Я хочу кратко резюмировать его решение: существуют миллиарды временных рядов, и нам нужно предсказать, что будет дальше в каждом из них. Учитывая разнообразие временных рядов, лучше сгруппировать их в десятки тысяч кластеров и обучить модель прогнозирования для каждого кластера. Однако кластеризация временных рядов сама по себе является проблемой, поскольку она имеет множество функций и множество точек данных во времени. Чтобы решить эту проблему, Йозеф сначала применил модель линейной регрессии к каждому временному ряду и использовал коэффициенты каждой модели в качестве признаков для кластеризации. Таким образом, у него было несколько функций в алгоритме кластеризации. Он использовал модель смеси Гуасса для кластеризации. В конце концов, кластеризация разделила пространство на более мелкие подпространства.

Следующая задача — параллельно обучать модели для всех подпространств. Джозеф сказал, что простые модели, такие как линейная регрессия, работают хорошо. Он также добавил к временным рядам дополнительные функции, такие как средняя цена между всеми стыковками на определенном маршруте, таком как Лондон-Берлин. Ключевым функционалом Spark, который позволял обучать все модели одновременно, является collect_list, который позволял объединять миллионы строк в одну строку с миллионами значений, к которым применялась функция UDF, выполняющая обучение модели. Элегантность решения блестящая.

Вывод

Это была отличная конференция, и я многому научился. У меня была короткая экскурсия по Брюсселю, я обязательно съел картофель фри и вафли.

Spark 2.0 — это хит, который обещает быть быстрым благодаря всем оптимизациям, полученным от оптимизатора Catalyst и проекта Tungsten. Нам придется немного подождать, пока появятся потоковые соединители, чтобы в полной мере использовать структурированную потоковую передачу и прирост производительности, но это должно произойти к концу года. Мерси бокуп Databricks!

Первоначально опубликовано на сайте semantive.com 4 ноября 2016 г.