Есть ли способ передать исторические данные в druid через http?

У меня есть проект IOT, и я хочу использовать Druid в качестве СУБД временных рядов. Иногда устройство IOT может потерять сеть и повторно передать исторические данные и данные в реальном времени при повторном подключении к серверу. Я знаю, что Druid может принимать данные в реальном времени через HTTP push / pull и исторические данные через http pull или KIS, но я не могу найти документ о приеме исторических данных через http push.

Есть ли способ отправить исторические данные в druid через http push?


person tz_imu    schedule 15.03.2018    source источник


Ответы (2)


Я вижу здесь несколько вариантов:

  1. Продолжайте подталкивать исторические данные к той же теме kafka (или другому источнику потоковой передачи) и делать отклонение на основе метки времени сообщения внутри Druid. Это упрощает архитектуру вашего приложения и позволяет druid обрабатывать отклонение просроченных событий.
  2. Используйте пакетную загрузку для исторических данных. Вы отправляете исторические данные в другую тему Kafka, запускаете задание Spark / Gobblin / любое другое индексирование, чтобы передать данные в HDFS. Затем сделайте пакетное поглощение на Druid. Но помните, что Druid перезаписывает любые сегменты реального времени пакетными сегментами для указанного windowPeriod. Поэтому, если исторические данные не полны, вы столкнетесь с потерей данных. Чтобы предотвратить это, вы всегда можете перекачивать данные в реальном времени в hadoop и периодически выполнять дедупликацию данных HDFS и загружать их в Druid. Как видите, это сложная архитектура, но это может привести к минимальной потере данных.

На вашем месте я бы упростил и отправил все данные в один и тот же источник потоковой передачи, такой как Kafka. Я бы индексировал сегменты в Druid на основе отметки времени моего сообщения, а не текущего времени (которое, я считаю, является значением по умолчанию).

person Ramkumar Venkataraman    schedule 19.03.2018
comment
Мы не используем Kafka и, возможно, не будем использовать его в ближайшем будущем. Мы хотим использовать http push для отправки данных в реальном времени / исторических данных и не хотим задействовать новый сторонний компонент. - person tz_imu; 20.03.2018
comment
В этом случае вы все равно можете использовать HTTP-push, но отправьте его на собственный сервер, который перекачивает данные в HDFS. HttpFS можно использовать для передачи данных в HDFS через http. Я использовал библиотеку ввода-вывода с отображением памяти (например, поток, хронику и т. Д.) Для сбора и передачи данных в HDFS. Суть в том, чтобы каким-то образом получить данные в HDFS и выполнить пакетную загрузку. - person Ramkumar Venkataraman; 20.03.2018
comment
И для варианта №1 выше необязательно использовать Kafka. Дело было в том, чтобы использовать временную метку на основе сообщений, чтобы druid игнорировал поздние данные. - person Ramkumar Venkataraman; 20.03.2018

Недавно выпущенная служба индексирования kafka гарантирует только однократную загрузку.

См. Ссылку ниже - http://druid.io/docs/latest/development/extensions-core/kafka-ingestion.html

Если вы все еще хотите принимать по http, вы можете проверить сервер спокойствия. Он имеет несколько встроенных механизмов для обработки дубликатов.

person mdeora    schedule 18.05.2018