Выполнение нескольких Select * в QueryDatabaseTable в NiFi - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу выполнить select * from table1, select * from table2, select * from table3, ... select * from table80 .... (В основном извлекаем данные из 80 различных таблиц и отправляем данные по 80 различным индексам в Elasticsearch(Кибана) .

Могу ли я дать несколько select * statement в одну таблицу базы данных запросов и затем направить ее к различным индексам? Если да, то как будет выглядеть поток?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Существует несколько способов решения этой проблемы.

  • Если ваши таблицы буквально table1, table2 и т. Д., Вы можете просто сгенерировать 80 потоковых файлов, каждый с уникальным целочисленным значением в атрибуте (то есть table_count), и использовать GenerateTableFetch и ExecuteSQL для создания запросов с использованием этого атрибута через язык выражений
  • Если имена таблиц непоследовательны (например, users, addresses и т. Д.), Вы можете прочитать из файлаперечисление каждого в строке или использование ListDatabaseTables для запроса имен в базе данных.Затем можно выполнить простую обработку текста, чтобы разделить созданные потоковые файлы по одному на таблицу и продолжить, как указано выше
0 голосов
/ 15 декабря 2018

QueryDatabaseTable не разрешает входящие соединения , поэтому not possible.

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

Поток:

1. ListDatabaseTables
2. RouteOnAttribute //*optional* filter only required tables
3. GenerateTableFetch //to generate pages of sql queries and store state
4. RemoteProcessGroup (or) Load balance connection
5. ExecuteSql //run more than one concurrent task if needed
6. further processing
7. PutElasticSearch.

Кроме того, если вы не хотите запускать поток incrementally, удалите GenerateTableFetch процессор

  • Настроить ExecuteSql запрос выбора процессора как

    select * from ${db.table.schema}.${db.table.name}

Некоторые полезные ссылки:

  • GenerateTableFetch link1 link2

  • Инкрементный запуск ExecuteSQL процессора без использования GenerateTableFetch ссылка

...