Нифи присоединяется, используя ExecuteSQL для больших таблиц - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь объединить несколько столов, используя NiFi.Источником данных может быть MySQL или RedShift, возможно, что-то еще в будущем.В настоящее время я использую процессор ExecuteSQL для этого, но вывод находится в одном поточном файле.Следовательно, для терабайта данных это может не подходить.Я также пытался использовать generateTableFetch, но у этого нет опции соединения.

Вот мои вопросы:

  1. Есть ли альтернатива для процессора ExecuteSQL?
  2. Есть ли способ сделать вывод процессора ExecuteSQL в нескольких потоковых файлах?В настоящее время я могу разделить вывод ExecuteSQL с помощью процессора SplitAvro.Но я хочу, чтобы ExecuteSQL сам разбивал выходные данные
  3. . GenerateTableFetch генерирует SQL-запросы на основе смещения.Замедлит ли это процесс, когда набор данных станет больше?

    Пожалуйста, поделитесь своими мыслями.Заранее спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

1. Есть ли альтернатива для процессора ExecuteSQL?

  • если вы joining multiple tables, тогда нам нужно использовать ExecuteSQL* Процессор 1011 *.

2. Есть ли способ сделать вывод процессора ExecuteSQL в нескольких потоковых файлах?В настоящее время я могу разделить вывод ExecuteSQL с помощью процессора SplitAvro.Но я хочу, чтобы сам ExecuteSQL разделял выходные данные?

  • Начиная с версии NiFi-1.8 мы можем настроить Max Rows for flowfile, чтобы процессор ExecuteSQL разделял потоковые файлы,
  • NiFi-1251 для решения этой проблемы.

3.GenerateTableFetch генерирует SQL-запросы на основе смещения.Замедлит ли это процесс, когда набор данных станет больше?

  • , если ваша исходная таблица имеет indexes на Maximum-value Columnsзатем он won't замедляет процесс, даже если ваш набор данных становится больше.

  • , если в исходной таблице создано no indexes, то будетfull table scan будет выполняться всегда, что приводит к замедлению процесса.

...