【问题标题】:Merge two schemas into one in Apache nifi在 Apache nifi 中将两个模式合并为一个
【发布时间】:2018-05-04 21:03:37
【问题描述】:

我正在尝试使用 Apache nifi 将两个 csv 文件合并为一个 json。 两个 csv 是 people.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) 的流程:

  • 获取文件
  • UpdateAttribute (schema.name)
  • 拆分记录
  • 提取文本
  • UpdateAttribute(correlation.id,newschema)
  • 漏斗
  • 合并记录/合并内容
  • 放置文件

试图实现最终的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"
    }]
}
}

但我不确定如何设置合并记录,或者如何在将内容合并到单个 json 之后加入多个 csv 行。有没有办法做到这一点?

【问题讨论】:

    标签: merge apache-nifi


    【解决方案1】:

    您实际上可以使用

    来实现这一点

    1- ConvertRecord(CSV 到 JSON)- 在您的情况下使用 Avro Schema

    CSVReader

    JsonRecordSetWriter

    AvroSchemaRegistry

       {
     "name": "person",
     "namespace": "nifi",
     "type": "record",
     "fields": [
     {"name": "Id" , "type" : "string"},
     {"name": "Name" , "type" : "string"},
     {"name": "Surname" , "type" : "string"}
     ]
    }
    
    • 2 - SplitJson
    • 3 - 评估Json
    • 4 - LookupAttribute (Get Desc SimpleCsvFileLookupService)
    • 5 - LookupAttribute(获取日期 SimpleCsvFileLookupService)
      • 6 - AttriutetoJson

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 2020-03-22
      • 1970-01-01
      • 2020-03-22
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多