Улей преобразования данных в режиме реального времени? - PullRequest
1 голос
/ 13 февраля 2020

У меня есть следующий конвейер данных:

  1. Процесс записывает сообщения в Kafka
  2. Приложение структурированной потоковой передачи Spark прослушивает новые сообщения Kafka и записывает их в виде HDFS
  3. Пакетное задание Hive выполняется ежечасно и считывает вновь принятые сообщения из HDFS и через некоторые средне сложные операторы INSERT INTO заполняет некоторые таблицы (у меня нет доступных материализованных представлений). РЕДАКТИРОВАТЬ : По существу, после моей работы в Hive у меня есть результат Table1 , где хранятся необработанные данные, затем другая таблица Table2 = fun1 (Table1) , затем Table3 = fun2 (Таблица2) , затем Table4 = соединение (Таблица2, Таблица3) и др. c. Fun - это выборка или агрегация.
  4. Панель инструментов Tableau визуализирует данные, которые я написал.

Как видите, шаг 3 делает мой конвейер не в реальном времени. Что вы можете мне предложить, чтобы сделать мой трубопровод полностью в режиме реального времени? РЕДАКТИРОВАТЬ : Я бы хотел, чтобы Table1, ... TableN обновлялся в режиме реального времени!

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020
  • Использование Hive с Spark Streaming вообще не рекомендуется. Поскольку целью потоковой передачи Spark является низкая задержка. Hive вводит максимально возможную задержку (OLAP), поскольку в бэкэнде он выполняет задание MR / Tez (зависит от hive.execution.engine).

Рекомендация: Используйте потоковую искру с DB с низкой задержкой, как HBASE, Phoenix.

Решение: Разработайте потоковое задание Spark с Kafka в качестве источника и используйте специальный приемник для записи данных в Hbase / Phoenix.

0 голосов
/ 13 февраля 2020

Представление HDFS, очевидно, не в режиме реального времени. Mem SQL или Druid / Imply предлагают гораздо больше в режиме реального времени приема из Kafka

. Вам нужны исторические данные для выполнения свертки и агрегации. Таблица может кэшировать наборы данных, но она не хранит постоянно сама. Поэтому вам нужно немного памяти , и вы решили использовать HDFS, а не базу данных.

Примечание: Hive / Presto можно читать напрямую с Kafka. Поэтому вам даже не нужна Spark.

Если вы хотите выполнить прокатку агрегатов из Kafka и сделать ее запрашиваемой, вместо нее можно использовать K SQL или написать собственное решение Kafka Streams

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...