Мы используем nifi под нашим ETL-приложением и столкнулись с проблемой при работе с процессором UpdateRecord. В то время как мы начали работать над уровнем атрибутов в Nifi, например, когда-то поток был
List File-> Fetch File ->SpliText -> ExtractText -> UpdateAttribute -> AttributestoCSV -> CSVtoORC -> MergeContent ->PutHDFS
В этом подходе у нас была гибкость в использовании языка выражений nifi, но этот шаблон не работал в основном из-за Слияние было очень медленным. Затем мы переключились на подход прямого обновления контента с использованием UpdateRecord без разделения записей и не используя атрибуты для обновления.
Теперь проблема в том, что в процессоре UpdateRecord, если мне нужно использовать Язык выражений nifi, а не DSL (который имеет ограниченные функции), создает две проблемы:
Я не могу создать производные поля, потому что ${field.value}
берет существующий столбец и записывает в существующий столбец только.
${field.value}
учитывает только один столбец, например, если мне нужно объединить два столбца, которые я не могу использовать с помощью языка выражений, мне придется переключиться на DSL. Это создает несколько UpdateRecord для меня, что мне неудобно цитировать представление.
Пожалуйста, проведите меня через это.