Как использовать параметры в процессоре Nifi ExecuteSQL? - PullRequest
1 голос
/ 23 апреля 2019

Вместо объединения я хочу, чтобы Нифи сначала прочитал всех людей в БД, а затем для каждого человека, чтобы он приводил адреса.Я знаю, что это не самый эффективный способ, но у нас есть некоторые конкретные причины для этого.

Часть «каждый человек» решается с помощью процессора SplitAvro или SplitJson, но как я могу получить идентификатор для этого текущегочеловек и использовать его в качестве параметра в следующем процессоре ExecuteSQL?

Я проверил что-то похожее на то, что я хочу, однако вопрос немного устарел (, как динамически передавать значения в Apache NiFi из executeSQL вSelectHiveQL )

Однако представленное выше решение выглядит скорее как обходной путь для чего-то, что должно быть простым, я думаю.

(В моем случае я не использую Hive, оба ExecuteSQLпроцессор, который я использую для запросов к базам данных SQl Server)

1 Ответ

2 голосов
/ 23 апреля 2019

Я признаю, что это запутанный сценарий, потому что вместо JOIN вы выполняете чтение / повторение / запрос, но если это то, что вы действительно хотите сделать, я думаю ExecuteSQLRecord это то, что вы ищете.Этот процессор выполнит запрос SQL и вернет результаты в виде записей, используя настроенную службу контроллера RecordWriter.Затем вы можете выполнить дополнительные запросы, используя LookupRecord, который может подключаться к произвольным источникам данных (хотя СУБД в настоящее время не поддерживается) для обогащения данных в формате записи, или использовать SplitRecord для создания потоковых файлов из отдельныхзаписи и маршрутизация к другому ExecuteSQLRecord процессору, который может использовать атрибуты входящего потока в качестве параметров запроса для SQL.

...