Объедините два потока JSON вместе в NiFi - PullRequest
0 голосов
/ 02 сентября 2018

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

потоки1:

attribute:    
xuuid = 123456

content:
{
"sname":"jack",
"id":"00001",
"state":"NY"
}

FLOW2:

attribute:    
xuuid = 123456

content:
{
"country":"US",
"date":"1983"
}

и я ожидаю эту форму данных в одном потоке вывода:

desired_flow:

attribute:    
xuuid = 123456

content:
{
"sname":"jack",
"id":"00001",
"state":"NY",
"country":"US",
"date":"1983"
}

как мне играть с этим? Процессор MergeContent или MergeRecord? я думаю, что mergerecord справится с этим, но я запутался в этом.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

То, что вы запрашиваете, - это потоковое соединение, и это не то, что NiFi действительно делает, аналогичный вопрос и ответ здесь:

https://stackoverflow.com/a/42909221/5650316

Процессоры слияния предназначены для слияния фрагментов данных один за другим, а не для выполнения потокового соединения. Например, если у вас много маленьких json-сообщений, вы можете использовать MergeContent или MergeRecord, чтобы объединить тысячи из них в один файл потока перед записью в HDFS.

0 голосов
/ 03 сентября 2018

Да, MergeContent может сделать это за вас.

Я использую EvalJson -> MergeContent -> AttributesToJson

Я разместил здесь шаблон, с помощью которого можно поиграть. Шаблон Apache NiFi Merge Json

MergeContent должен иметь следующие параметры: «Сохранить все атрибуты», «2 числа», «Стратегия разделителей - текст»

...