Nifi MergeRecord & MergeContent не может объединить потоки Avro, имеющие другую схему - PullRequest
0 голосов
/ 21 мая 2018

Я использую NiFi Flow в качестве ListFile >> FetchFile >> SplitJson >> UpdateAttribute >> FlattenJson >> InferAvroSchema >> ConvertRecord >> MergeRecord >> PutParquet.

Ввод Json:

[{
       "Id": 1235,
        "Username": "fred1235",
        "Name": "Fred",
        "ShippingAddress": {
            "Address1": "456 Main St.",
            "Address2": "",
            "City": "Durham",
            "State": "NC"
        }

    },{

        "Id": 1236,
        "Username": "larry1234",
        "Name": "Larry",
        "ShippingAddress": {
            "Address1": "789 Main St.",
            "Address2": "",
            "City": "Durham",
            "State": "NC",
            "PostalCode": 277453
        },
        "Orders": [{
                "ItemId": 1111,
                "OrderDate": "11/11/2012"
            }, {
                "ItemId": 2222,
                "OrderDate": "12/12/2012"
        }]

}]

Процессор MergeRecord не выдает «Заказы»: массив в схеме объединенного файла.Та же проблема с процессором MergeContent.

1 Ответ

0 голосов
/ 22 мая 2018

Вместо того, чтобы использовать SplitJson и FlattenJson, вы можете использовать JoltTransformJSON со следующей спецификацией ChainR, чтобы сгладить все это без разделения:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "ShippingAddress": {
          "Address1": "[&2].ShippingAddress_Address1",
          "Address2": "[&2].ShippingAddress_Address2",
          "City": "[&2].ShippingAddress_City",
          "State": "[&2].ShippingAddress_State"
        },
        "Orders": {
          "*": {
            "ItemId": "[&3].Orders_&1_ItemId",
            "OrderDate": "[&3].Orders_&1_OrderDate"
          }
        },
        "*": "[&1].&"
      }
    }
  }
]

Не уверен, для чего используется ConvertRecord, но вам больше не нужен MergeRecord.Если это не тот результат, который вы ищете, пожалуйста, дайте мне знать, что вы ожидаете (для обеих записей, с полем «Заказы» и без него), и я буду рад помочь.

...