我正在尝试使用Apache nifi将两个csv文件合并到一个json中 . 两个csv是包含人员信息的persons.csv:
Id|Name|Surname
ABC-123|John|Smith
ABC-111|Allan|Wood
ABC-001|Grace|Kelly
第二个csv包含这些人参加过的活动列表:
EId|PId|Date|Desc
1|ABC-123|2017-05-01|"Groove party"
2|ABC-111|2017-06-01|"Snack No. One"
3|ABC-123|2017-06-01|"The night out"
我正在使用(Nifi flow on git hub)的流程:
-
GetFile
-
UpdateAttribute(schema.name)
-
拆分记录
-
ExtractText
-
UpdateAttribute(correlation.id,newschema)
-
漏斗
-
MergeRecords /合并内容
-
PutFile
试图获得最终的json:
{
"Person": {
"Id": "ABC-123",
"Name": "John",
"Surname": "Smith",
"Events": [{
"Date": "2017-05-01",
"Name": "Groove party"
}, {
"Date": "2017-06-01",
"Name": "The night out"
}]
}
}
但是我不确定如何设置合并记录,或者如何在合并内容之后将多个csv行连接到单个json中 . 有办法怎么做?
1 回答
你实际上可以实现这一点
1- ConvertRecord (CSV到JSON) - 在您的情况下使用Avro Schema
CSVReader
JsonRecordSetWriter
AvroSchemaRegistry
2 - SplitJson
3 - EvaluateJson
4 - LookupAttribute(Get Desc SimpleCsvFileLookupService)
5 - LookupAttribute(获取日期SimpleCsvFileLookupService)
6 - AttriutetoJson