Есть ли способ в NiFi для маршрутизации данных на основе имени поля - PullRequest
0 голосов
/ 12 октября 2018

Допустим, у нас есть файл CSV, в котором у меня есть 5 полей: Id, Age, FirstName, LastName, Address.

Я хочу направить все числовые поля (Id, Age) в один поток истроковые поля (FirstName, LastName, Address) в другом потоке.Я использую процессор GetFile для получения всех CSV.

Какой процессор использовать и какую конфигурацию настроить?

Спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Да.Это легко сделать, если вы хорошо знаете, какие поля находятся у вас под рукой.В этом случае вы можете использовать процессор QueryRecord для разделения содержимого потоковых файлов на основе полей на разные потоковые файлы.

enter image description here

QueryRecord принимает динамические отношения, которые принимают SQL-оператор в качестве значения.Например, предположим, что у вас есть следующий контент в вашем CSV.

id,name,age,gender
1,John,29,M
5,Janine,31,F

И вы хотите иметь id и age в FlowFile и name и gender в другом FlowFile,вам необходимо настроить QueryRecord, как показано ниже:

enter image description here

Поскольку QueryRecord является процессором на основе записей, вы хотите настроить RecordReader и RecordWriter (Я использовал CSVReader / CSVRecordSetWriter, поскольку наш вход и выход будет CSV), и, возможно, потребуется настроить их на SchemaRegistry

Выход - числовые поля

enter image description here

Вывод - не числовые поля

enter image description here

Подсказка : Если вы собираетесь использовать AvroSchemaRegistry, вы можете использовать процессор InferAvroSchema для вывода схемы Avro для вашего CSV-ввода.

...