복붙노트

[HADOOP] nifi ConvertRecord JSON에서 CSV로 단일 레코드 만 얻으시겠습니까?

HADOOP

nifi ConvertRecord JSON에서 CSV로 단일 레코드 만 얻으시겠습니까?

아래의 흐름을 json 데이터를 읽고 convertRecord 프로세서를 사용하여 CSV로 변환하도록 설정했습니다. 그러나 출력 흐름 파일은 모든 레코드 대신 단일 레코드로 채워집니다 (첫 번째 레코드 만 가정 함).

누군가가 올바른 구성을 제공 할 수 있습니까?

소스 json 데이터 :

{"creation_Date": "2018-08-19", "Hour_of_day": 7, "log_count": 2136}
{"creation_Date": "2018-08-19", "Hour_of_day": 17, "log_count": 606}
{"creation_Date": "2018-08-19", "Hour_of_day": 14, "log_count": 1328}
{"creation_Date": "2018-08-19", "Hour_of_day": 20, "log_count": 363}

흐름:

ConvertRecord 프로세서 구성 :

JsonTreeReader 컨트롤러 설정 :

CSVrecordsetWriter 컨트롤러 구성 :

AvroSchemaRegistry 컨트롤러 설정 :

{
  "type": "record",
  "name": "demo_schema",
  "fields":
  [
    { "name": "creation_Date", "type": "string"},
    { "name": "Hour_of_day", "type": "string"},
    { "name": "log_count", "type": "string"}
  ]
}

내가 얻는 흐름 파일 내용 :

creation_Date,Hour_of_day,log_count
2018-08-16,0,3278

내가 필요한 것:

creation_Date,Hour_of_day,log_count
2018-08-16,0,3278
2018-08-17,4,278
2018-08-18,10,6723

희망을 나는 상황을 설명하기 위해 정교한 사람이 전체 데이터를 얻을 수 있도록 구성을 수정하는 데 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

해결법

  1. ==============================

    1.이 NIFI-4456 버그를 직면하고 있으며 NiFi-1.7 버전부터 수정되었습니다.

    이 NIFI-4456 버그를 직면하고 있으며 NiFi-1.7 버전부터 수정되었습니다.

    분할 선 개수 = 1 인 SplitText 프로세서 사용

    MergeContent / MergeRecord 프로세서 (Defragments를 병합 전략으로 사용)를 사용하고 메시지의 유효한 json 배열로 만듭니다.

    병합 레코드 프로세서와 리더 및 라이터 컨트롤러를 사용하는 경우  서비스는 Json 형식이어야합니다.

    ConvertRecord 가공업 자에 합병 한 관계를 공급하십시오.

    흐름:

    NiFi-1.7 + 버전부터는 NiFi가 회선 형식 당 json을 읽을 수 있으므로 JsonTreeReader 컨트롤러 서비스에서 새로운 / 추가 항목을 구성 할 필요가 없습니다.

    최신 정보:

    MergeContent 구성 :

    MergeContent 프로세서를 사용하는 경우 아래 스크린 샷과 같이 프로세서를 이와 같이 구성하십시오.

    또한 MergeContent 프로세서 대신 MergeRecord 프로세서를 사용하여 유효한 json 메시지 배열을 만드는 것이 좋습니다.

  2. from https://stackoverflow.com/questions/51956767/nifi-convertrecord-json-to-csv-getting-only-single-record by cc-by-sa and MIT license