Я делю список полей и пытаюсь объединить их в конце.У меня есть 2 вида полей, стандартное поле и настраиваемое поле.Способ обработки пользовательских полей отличается от стандартных полей.
{
"standardfield1" : "fieldValue1",
"customField1" : "customValue"
}
Они должны быть переведены в
{
"standardfield1" : "fieldValue1",
"customFields" : [
{ "type" : "customfield",
"id" : 1212 //this is id of the customField1, retrieved at run time
"value" : "customValue"
} ]
}
Моя схема mergeRecord установлена на
{
"name": "custom field",
"namespace": "nifi",
"type": "record",
"fields": [
{ "name": "id", "type": "string" },
{ "name": "type", "type": "string" },
{ "name": "value", "type": "string" }
]
}
И в соответствии с моими потребностями я устанавливаю содержимое стандартного поля для нового атрибута потока, поскольку я могу извлечь его из него, и помещаю пустое значение в содержимое потока файла.
Итак, и пользовательские поля, истандартные поля подключены к процессору mergeRecord.
он работает довольно хорошо, если в полезной нагрузке доступны настраиваемые поля.Если есть только стандартные поля и нет настраиваемых полей, то процессор mergeRecord не будет сливать что-либо, а также не потерпит неудачу, он просто генерирует исключение NullPointerException, и там поток-файл застрял в очереди навсегда.
Я хочу заставить процессор mergeRecord сливатьсядаже пустые файлы потока контента.
Любая помощь будет оценена