NiFi: преобразование вложенного файла JSON в CSV - PullRequest
1 голос
/ 03 мая 2019

Я новичок в Nifi и в моем случае должен использовать тему JSON от Kafka и хотел бы преобразовать его в файл CSV, где мне нужно выбрать только несколько скалярных и несколько вложенных полей.

Мне нужно сделать следующие вещи:

 Consume topic - Done
 Json to CSV
 Include header in the CSV file
 Merge into single file (if its split)
 Give a proper filename with date

по ссылке ниже: https://community.hortonworks.com/articles/64069/converting-a-large-json-file-into-csv.html

Но не уверен, что это правильный подход, а также не знаю, как создать один файл. Я использую NiFi (1.8) and schema is stored in Confluent Schema Registry

Образец Json:

{
  "type" : "record",
  "name" : "Customer",
  "namespace" : "namespace1"
  "fields" : [ {
    "name" : "header",
    "type" : {
      "type" : "record",
      "name" : "CustomerDetails",
      "namespace" : "namespace1"
      "fields" : [ {
        "name" : "Id",
        "type" : "string"
      }, {
        "name" : "name",
        "type" : "string"
      }, {
        "name" : "age",
        "type" : [ "null", "int" ],
        "default" : null
      }, {
        "name" : "comm",
        "type" : [ "null", "int" ],
        "default" : null
      } ]
    },
    "doc" : ""
  }, {
    "name" : "data",
    "type" : {
      "type" : "record",
      "name" : "CustomerData"
      "fields" : [ {
        "name" : "tags",
        "type" : {
          "type" : "map",
          "values" : "string"
        }
      }, {
        "name" : "data",
        "type" : [ "null", "bytes" ]
        "default" : null
      } ]
    },
    "doc" : ""
  } ]
}

Пожалуйста, ведите меня.

1 Ответ

0 голосов
/ 07 мая 2019

Попробуйте ConvertRecord с помощью JsonTreeReader и CSVRecordSetWriter. Writer может быть настроен на включение строки заголовка, и вам не нужно будет разделять / объединять. UpdateAttribute может использоваться для установки атрибута filename, который является связанным именем файла для файла потока (используется, например, PutFile).

Если ConvertRecord не дает желаемого результата, не могли бы вы уточнить разницу между тем, что он дает, и тем, что вы ожидаете?

...