NiFi: извлеките содержимое FlowFile и добавьте его в атрибуты - PullRequest
0 голосов
/ 30 октября 2018

Я генерирую случайные данные из следующей схемы JSON / AVRO:

{
  "type" : "record",
  "namespace" : "test",
  "name" : "metro_data",
  "fields": [
    {
      "name" : "PersonID",
      "type" : "int"
},
{
  "name" : "TripStartStation",
  "type" : {
    "type" : "enum",
    "name" : "StartStation",
    "symbols" : ["WIEHLE_RESTON_EAST", "SPRING_HILL", "GREENSBORO"]    

    }
},
{
  "name" : "TripEndStation",
  "type" : {
    "type" : "enum",
    "name" : "EndStation",
    "symbols" : ["WIEHLE_RESTON_EAST", "SPRING_HILL", "GREENSBORO""]    

      }
    }
  ]
}

Приведенная выше схема генерирует это, например:

[ {
  "PersonID" : -1089196095,
  "TripStartStation" : "WIEHLE_RESTON_EAST",
  "TripEndStation" : "SPRING_HILL"
}

Я хочу взять PersonID номер схемы и добавить его в Атрибуты. Например, пробел на этой фотографии должен извлечь фактический номер PersonID, сгенерированный из потока:

enter image description here

Я пытался использовать EvaluateJSONPath со следующей конфигурацией, и вот как я получаю empty string set в PersonalID:

enter image description here

Мой следующий процессор UpdateAttribute? Не уверен, как вытащить этот контент. Спасибо!

1 Ответ

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

У вас есть массив сообщений json (например: [...]), и вам нужно разбить массив json на отдельные потоковые файлы, используя SplitJson процессор с разделенным выражением как $. *

Затем используйте EvaluateJsonProcessor , чтобы извлечь PersonID значение в качестве атрибута.

Расход:

--> SplitJson --> EvaluateJsonPath--> other processors

Для получения более подробной информации см. эту ссылку , относящуюся к той же проблеме.

...