Apache Nifi - ConvertJSONToSQL - JSON Не имеет значения для необходимого столбца - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь поэкспериментировать с учебником, с которым я столкнулся в Интернете, и вот его шаблон:

enter image description here

В то время как шаблон закончился преобразованием CSV в JSON, я хочу пойти дальше и выбросить это в MySQL Table. Поэтому я создаю новый процессор "ConvertJSONToSQL". Вот его свойства:

enter image description here

А это службы контроллера:

enter image description here

Когда я запускаю это, я получаю следующую ошибку:

enter image description here

Вот пример входного файла:

enter image description here

Вот структура таблицы MySQL:

enter image description here

Образец сгенерированного JSON показан ниже:

[{
    "id": 1,
    "title": "miss",
    "first": "marlene",
    "last": "shaw",
    "street": "3450 w belt line rd",
    "city": "abilene",
    "state": "florida",
    "zip": "31995",
    "gender": "F",
    "nationality": "US"
},
{
    "id": 2,
    "title": "ms",
    "first": "letitia",
    "last": "jordan",
    "street": "2974 mockingbird hill",
    "city": "irvine",
    "state": "new jersey",
    "zip": "64361",
    "gender": "F",
    "nationality": "US"
}]

Я не понимаю описание ошибки. Нет поля с именем "CURRENT_CONNECTIONS", буду признателен за ваши данные здесь, пожалуйста ..

1 Ответ

0 голосов
/ 06 июля 2018

В вашем случае вы хотите использовать PutDatabaseRecord вместо ConvertJSONToSQL. Это связано с тем, что выходные данные ConvertRecord - CSVtoJSON представляют собой файл потока, ориентированный на запись (то есть один файл потока, содержащий несколько записей и определенную схему). ConvertJSONToSQL из документации ожидает один элемент JSON:

Ожидается, что входящий FlowFile будет "плоским" сообщением JSON, что означает, что оно состоит из одного элемента JSON, и каждое поле отображается в простой тип

Процессоры, ориентированные на записи, предназначены для совместной работы в потоке данных, который работает со структурированными данными. Они требуют определения (или выведения) схемы для данных в ваших потоковых файлах, что и делают Controller Services в вашем случае, но они позволяют вам кодировать / декодировать, работать и манипулировать несколькими записями в файл с одним потоком, который намного эффективнее!

Дополнительные ресурсы, которые могут быть полезны:

...