Можем ли мы изменить тип данных измерения после приема в Druid? - PullRequest
0 голосов
/ 21 января 2019

Мы выполняем POC для Druid, чтобы проверить, подходит ли он для наших сценариев использования. Хотя мы можем принимать данные, но не уверены в следующем:

  1. Как druid поддерживает ввод без схемы: допустим, входное измерение находится на усмотрение конечного пользователя. Тогда здесь нет определенной схемы. Таким образом, ответственность лежит на приложении, чтобы определить новое измерение, определить тип данных и принять. Есть ли способ добиться этого?
  2. Как druid поддерживает изменения типов данных: скажем, в курсе (скажем, после ввода 100 ГБ данных), необходимо изменить тип данных измерения со строки на длинную или длинную на строковую (или другую). Каков рекомендуемый способ сделать это, не мешая продолжающемуся потреблению?

Я просмотрел документы, но не смог получить подробный обзор для обоих вариантов использования.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

1) В таких случаях вам не нужно указывать какие-либо столбцы измерения в спецификации загрузки druid, и druid будет рассматривать все столбцы, которые не являются меткой времени, как измерение.

Подробнее о таком подходе можно узнатьнайдено здесь: Druid Schema less Ingestion

2) Для второго вопроса вы можете внести изменения в схему, и druid создаст новые сегменты с новым типом данных, в то время как ваши старые сегменты будут по-прежнему использовать старые данныеtype.

Если вы хотите сохранить все свои сегменты с новым типом данных, вы можете переиндексировать все сегменты.Пожалуйста, просмотрите эту ссылку для дальнейшего описания переиндексации всех сегментов.http://druid.io/docs/latest/ingestion/update-existing-data.html

Дополнительную информацию об изменениях схемы можно найти здесь: http://druid.io/docs/latest/ingestion/schema-changes.html

0 голосов
/ 21 января 2019

Для вопрос 1 Я бы все воспринял как строку и выяснил это позже. Должна быть возможность запрашивать строковые столбцы в друиде как числа

Получение возможного поведения, объясненного в: https://github.com/apache/incubator-druid/issues/4888

  1. Считайте, что значения являются нулями, не пытайтесь анализировать строковые значения. Кажется, это текущее поведение.

  2. Попробуйте проанализировать строковые значения и считать, что значения равны нулю, если они не разбираются, или нулевые, или множественные значения

Одно текущее несоответствие состоит в том, что с селекторами столбцов на основе выражений (что-либо, что проходит через Parser / Expr), поведение имеет вид (2). Смотрите IdentifierExpr +, как он обрабатывает строки, которые рассматриваются как числа. Но с прямыми селекторами столбцов поведение - (1). В частности это означает, что, например, агрегатор longSum ведет себя по-разному, если он «fieldName»: «x» и «expression»: «x», даже если вы думаете, что они должны вести себя одинаково.

Вы можете следить за всем обсуждением здесь: https://github.com/apache/incubator-druid/issues/4888

Для вопрос 2 думаю, что нужно переиндексировать данные - http://druid.io/docs/latest/ingestion/update-existing-data.html - http://druid.io/docs/latest/ingestion/schema-changes.html

Надеюсь, это поможет

...