Apache NiFi: отображение CSV с несколькими столбцами для создания новых строк - PullRequest
0 голосов
/ 07 ноября 2019

Я нашел похожий вопрос о переполнении стека. Этот подход хорошо работал только с несколькими столбцами. Но я понял, что этот метод невозможен для CSV с большим количеством столбцов.

У меня есть CSV с 75 столбцами. Я решил следовать этому подходу (та же ссылка, что упоминалась выше). Как попросили сделать в этом вопросе. Я добавил процессор UpdateRecord и добавил CSVReader и CSVWriter. Затем, как и было сказано, я ввел свой SchemaText. Это было довольно долго, так как мне потребовалось определить все 70 столбцов. Тогда CSVRecordSetWriter было сказано, что это invalid.

Я понял, после определенного количества определений столбцов Я включил в схему это стало invalid.

Часть моей схемы выглядит такэто:

{
   "type":"record",
   "name":"test2.csv",
   "namespace":"my.namespace",
   "fields":[
      {
         "name":"download",
         "type":"string"
      },
      {
         "name":"upload",
         "type":"string"
      }
      .
      .
      .
      .
      {
         "name":"operatorId",
         "type":"string"
      },
      {
         "name":"errorCode",
         "type":"string"
      }      
   ]
}

Также мой CSV содержит заголовки.

Цель : мне нужно сопоставить данные в столбце errorCode с новым столбцом с именем errorMean. Надеюсь, вы можете предложить метод, который я могу достичь этого. Не стесняйтесь дать решение, которое может даже полностью пропустить процесс записи Schema Text.

1 Ответ

2 голосов
/ 07 ноября 2019

Я нашел похожий вопрос о переполнении стека. Этот подход хорошо работал только с несколькими столбцами. Но я понял, что этот метод невозможен для CSV с большим количеством столбцов.

Чтобы избежать предоставления очень большой схемы, вы устанавливаете CSVReader'sSchema Access Strategy до Infer Schema и CSVRecordSetWriter's Schema Access Strategy до Inherit Record Schema. Поэтому, когда CSV читается, схема будет выведена. Затем та же схема будет использоваться для записи CSV.

enter image description here

Остальная часть сопоставления работает так же, как описано в ответе, который вы связали.

...