Apache NiFi:映射具有多列的 csv 以创建新行
Apache NiFi: Mapping a csv with multiple columns to create new rows
我发现 堆栈溢出。这种方法只适用于几列但我意识到这种方法不适用于具有大量列的 csv。
我有一个包含 75 列的 csv。我决定遵循 (与上面提到的 link 相同)。按照那个问题的要求去做。我添加了 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 也包含 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。
映射的其余部分与您链接的答案中描述的相同。
我发现
我有一个包含 75 列的 csv。我决定遵循 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 也包含 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。
映射的其余部分与您链接的答案中描述的相同。