Apache NiFi:映射具有多列的 csv 以创建新行

Apache NiFi: Mapping a csv with multiple columns to create new rows

我发现 堆栈溢出。这种方法只适用于几列但我意识到这种方法不适用于具有大量列的 csv。

我有一个包含 75 列的 csv。我决定遵循 (与上面提到的 link 相同)。按照那个问题的要求去做。我添加了 UpdateRecord 处理器并添加了 CSVReaderCSVWriter。然后按照我说的输入我的 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 也包含 headers。

Objective: 我需要将 errorCode 列中的数据映射到名为 errorMean 的新列。希望你能提出一种我可以实现这一目标的方法。随意给出一个解决方案,甚至可以完全跳过写下 Schema Text.

的过程

I found a similar question on stack overflow. This approach worked fine with just a couple of columns But I realised this method is not possible for csv's with a large number of Columns.

为避免提供非常大的架构,您将 CSVReader's Schema Access Strategy 设置为 Infer Schema 并将 CSVRecordSetWriter's Schema Access Strategy 设置为 Inherit Record Schema。因此,当读取 CSV 时,将推断架构。然后将使用相同的架构来编写 CSV。

映射的其余部分与您链接的答案中描述的相同。