Атрибуты Nifi для JSON изменяют мой порядок данных JSON - PullRequest
1 голос
/ 23 октября 2019

ФОН:

Я хочу немного изменить свой JSON с

{
  "d0" : 0.0,
  "d1" : 0.0,
  "d2" : 0.0,
  "d3" : 0.0,
  "d4" : 0.0,
  "d5" : 0.0,
  "d6" : 0.0,
  "d7" : 0.0
}

на

{ "d0" : [0.0],
  "d1" : [0.0],
  "d2" : [0.0],
  "d3" : [0.0]
  "d4" : [0.0],
  "d5" : [0.0],
  "d6" : [0.0],
  "d7" : [0.0]

}

, и я следую за ответомна вопрос, заданный здесь https://community.cloudera.com/t5/Support-Questions/Groovy-Script-in-ExecuteScript-Processor-To-Format-Date/td-p/230207

Соответственно, я использую -

1.EvaluateJsonPath 2.UpdateAttribute 3.AttributesToJson

и эту частьмоя обработка Nifi выглядит следующим образом

связанный поток nifi

Мои настройки для 3 процессоров -

1.EvaluateJsonPath

настройки / настройки для EvaluateJsonPath

2.UpdateAttribute

настройки / конфигурациидля UpdateAttribute

3.AttributesToJson

настройки / конфигурации для AttributesToJson

Но AttributesToJson просто меняет порядокданных в плоском JSON:

{
  "d4" : [0.0],
  "d5" : [0.0],
  "d6" : [0.0],
  "d7" : [0.0],
  "d0" : [0.0],
  "d1" : [0.0],
  "d2" : [0.0],
  "d3" : [0.0]
}

ВОПРОС:

Почему AttributesToJson ведет себя таким образом? Как мне изменить его на правильный порядок, начиная с d0 до d7? Мне нужен правильный порядок, потому что это должно быть тело запроса POST.

1 Ответ

0 голосов
/ 23 октября 2019

Используйте JoltTransformJson процессор, чтобы получить столбцы json в нужном порядке и сохранить следующие значения:

spec:

[{
    "operation": "shift",
    "spec": {
      "d1": "d1",
      "d2": "d2",
      "d3": "d3",
      "d4": "d4",
      "d5": "d5",
      "d6": "d6",
      "d7": "d7"
    }
  }
]

Теперь выходной файл потока будет в том порядке, в котором вы ожидаете:

{
  "d1" : [ 0 ],
  "d2" : [ 0 ],
  "d3" : [ 0 ],
  "d4" : [ 0 ],
  "d5" : [ 0 ],
  "d6" : [ 0 ],
  "d7" : [ 0 ]
}

(или)

Другим способом будет использование Query Record processor configure Record Reader /написать и добавить новый SQL-запрос с именами столбцов в правильном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...