Зачем нужна потоковая обработка данных, как её сочетать с пакетной, почему не обойтись без Apache Spark
Что такое потоковая обработка данных? Это – когда решение в реальном времени обрабатывает данные, которые поступают также в реальном времени, в формате потока, генерируются непрерывно. В потоке сложно определить полный и целостный набор данных. Обычно компании не имеют возможности хранить такие данные в полном объёме, произвольный доступ к ним есть не всегда.
Только знакомитесь с потоковой обработкой данных? Чтобы не запутаться в понятиях, прочитайте статью, 6 фактов об Apache Spark, которые нужно знать каждому. О значении потоковой обработки данных, необходимости сочетать её с пакетной и о том, как использовать для этого Apache Spark, размышляет Вамши Сриперумбудур. В Informatica Вашми занимается маркетингом решений Big Data и аналитики.
Задачи для потоковой обработки данных
Потоковая обработка данных применяется не только для данных, собранных через интернет вещей. Вот несколько примеров задач, для которых она будет полезна:
- Бороться с финансовыми мошенничествами (фродом) в реальном времени;
- Быстро сделать интересное предложение клиенту, который собирается перестать пользоваться вашими услугами или покупать у вас товары;
- Ввести динамическое ценообразование, в некоторых случая оперативно снижать цену для клиентов;
- Привлечь потенциального клиента в магазин, рядом с которым он находятся;
- В реальном времени мониторить данные пациентов.
Существует множество других примеров использования потоковой обработки данных в финансовом секторе, телекоме, рознице, здравоохранении, энергетике и государственном секторе.
Управляем одновременно потоковой обработкой данных и пакетной
Зачастую потоковая обработка данных не приносит пользы без привлечения пакетной. Давайте представим, то мы определили клиента для маркетинговых коммуникаций. Он входит в магазин? Мы его идентифицируем (например, с помощью видеокамеры) и сразу в реальном времени делаем ему персонализированное предложение. Для этого мы можем использовать его поисковую историю в браузере или историю его покупок в нашем магазине.
Данные с видеокамеры будут поступать в потоке, потребуют потоковой обработки данных. Пакетная используется системами, в которых хранится информации о клиенте, на основе которой мы будем делать наше предложение. Например, это может быть MDM-система. Данные в первом и втором случае будут значительно различаться. Они поступают на разных скоростях, с разной латентностью, задержкой. Эти различия нужно будет преодолеть, чтобы в реальном времени сделать клиенту персональное предложение. Данные нужно будет интегрировать.
Потоковая обработка данных с Apache Spark: разбить поток на фрагменты
Раньше потоковую обработку данных можно было осуществлять только отдельно от пакетной. Это подразумевало, что традиционные ETL-решения не могли работать с данными в потоке (обрабатывать данные и вносить их в базы). Для таких задач нужно было внедрять отдельное решение.
Некоторые вендоры, которые предлагают решения, которые ориентированы только на потоковую обработку данных, даже заявляли, что пакетная не нужна совсем. Они доходили до того, что называли её видом потоковой обработки данных.
Например, среди решений, которые успешно применялись для потоковой обработки данных – Apache Spark. Он разделяет информацию на устойчивые распределенные наборы данных (RDD). По сути, Apache Spark разбивает поток данных на RDD – фрагменты данных, которые распределяются по разным узлам кластера. Несколько таких фрагментов соединяются вместе в микро-пакет – DStream (Discretized Stream). Несколько DStream могут обрабатываться параллельно.
Проблема с механизмом DStream как раз была в том, при его применении приходилось разделять потоковую обработку данных и пакетную, а это усложняло весь механизм работы с данными и делало её дороже.
Потоковая обработка данных с Apache Spark: превратить поток в бесконечную таблицу для SQL
Со второй версии в Apache Spark доступен Structured Streaming, который помог преодолеть недостаток DStream. Structured Streaming – это масштабируемый и отказоустойчивый фреймворк для потоковой обработки данных, в основе его Spark SQL. Structured Streaming представляет поток данных в виде бесконечной таблицы.
Решение позволяет и проводить потоковую обработку данных, и интеграцию их с данными, которые обрабатываются пакетной. Другими словами, Structured Streaming для решений Big Data пытается унифицировать потоковые, итеративные и пакетные запросы с помощью абстрактного структурирования данных.
Обновлено: 10.07.2023
Опубликовано: 12.04.2019