JsonTreeReader
JsonTreeReader (JSON 트리 리더)
JSON을 개별 Record 객체로 파싱하는 Record Reader예요. 구조화된 스키마와 JSON 필드 간의 차이는 null 처리 또는 필드 건너뛰기로 처리돼요.
출처: 문서
본문
설명
JSON을 개별 Record 객체로 파싱해요. 이 리더는 각 레코드가 잘 구성된 JSON일 것으로 기대하지만, FlowFile의 콘텐츠는 흔한 'JSON-per-line' 형식처럼 잘 구성된 JSON 배열 또는 JSON 객체(사이에 선택적 공백 포함)가 여럿 이어진 형태일 수 있어요. 배열을 만나면 그 배열의 각 요소가 별도의 레코드로 처리돼요. 설정된 스키마에 JSON에 없는 필드가 있으면 null 값이 사용돼요. JSON에 스키마에 없는 필드가 있으면 그 필드는 건너뛰어져요. 자세한 내용과 예시는 Controller Service의 사용 방법(Usage)을 참고하세요.
태그
json, parser, reader, record, tree
속성 (Properties)
아래 목록에서 필수 속성은 별표(*)로 표시했어요. 그 외 속성은 선택 사항이고, 표에는 기본값과 NiFi Expression Language 지원 여부도 함께 나와 있어요.
| 표시 이름 | API 이름 | 기본값 | 허용 값 | 설명 |
|---|---|---|---|---|
| Allow Comments * | Allow Comments | false |
true false |
JSON 문서를 파싱할 때 주석을 허용할지 여부예요. |
| Date Format | Date Format | Date 필드를 읽고 쓸 때 사용할 형식을 지정해요. 지정하지 않으면 Date 필드는 epoch 이후 밀리초 수로 간주돼요. 지정하면 Java java.time.format.DateTimeFormatter 형식과 일치해야 해요(예: MM/dd/yyyy, 예: 01/01/2017). |
||
| Max String Length * | Max String Length | 20 MB |
JSON 문서를 파싱할 때 문자열 값의 허용 최대 길이예요. | |
| Schema Access Strategy * | Schema Access Strategy | infer-schema |
Infer Schema, 'Schema Name' Property, 'Schema Text' Property, Schema Reference Reader | 데이터 해석에 사용할 스키마를 얻는 방법을 지정해요. |
| Schema Branch | Schema Branch | Schema Registry 속성에서 스키마를 조회할 때 사용할 브랜치 이름을 지정해요. 선택한 Schema Registry가 브랜칭을 지원하지 않으면 이 값은 무시돼요. | ||
| Schema Name | Schema Name | ${schema.name} |
Schema Registry 속성에서 조회할 스키마의 이름을 지정해요. | |
| Schema Reference Reader * | Schema Reference Reader | Schema Reference Identifier를 결정하기 위해 FlowFile 속성 또는 콘텐츠를 읽는 책임이 있는 서비스 구현체예요. | ||
| Schema Registry | Schema Registry | Schema Registry에 사용할 Controller Service를 지정해요. | ||
| Schema Text | Schema Text | ${avro.schema} |
Avro 형식 스키마의 텍스트예요. | |
| Schema Version | Schema Version | Schema Registry에서 조회할 스키마의 버전을 지정해요. 지정하지 않으면 최신 버전을 가져와요. | ||
| Time Format | Time Format | Time 필드를 읽고 쓸 때 사용할 형식을 지정해요. 지정하지 않으면 epoch 이후 밀리초 수로 간주돼요. 지정하면 Java java.time.format.DateTimeFormatter 형식과 일치해야 해요(예: HH:mm:ss, 예: 18:04:15). |
||
| Timestamp Format | Timestamp Format | Timestamp 필드를 읽고 쓸 때 사용할 형식을 지정해요. 지정하지 않으면 millisecond since epoch으로 간주돼요. 지정하면 Java java.time.format.DateTimeFormatter 형식과 일치해야 해요(예: MM/dd/yyyy HH:mm:ss, 예: 01/01/2017 18:04:15). |
||
| Schema Application Strategy * | schema-application-strategy |
SELECTED_PART |
Whole JSON, Selected Part | 스키마가 전체 JSON에 대해 정의되는지, "Starting Field Name"부터 시작하는 선택된 부분에 대해 정의되는지 지정해요. |
| Schema Inference Cache | schema-inference-cache |
스키마를 추론할 때 사용할 Schema Cache를 지정해요. 채우지 않으면 매번 스키마를 추론해요. 캐시를 지정하면 먼저 캐시를 확인하고 적용 가능한 스키마를 찾으면 추론 대신 그걸 사용해요. | ||
| Starting Field Name | starting-field-name |
처리를 시작할 주어진 중첩 JSON 필드(배열 또는 객체)로 건너뜁니다. | ||
| Starting Field Strategy * | starting-field-strategy |
ROOT_NODE |
Root Node, Nested Field | 루트 노드 또는 지정된 중첩 노드에서 처리를 시작할지 지정해요. |
상태 관리
이 컴포넌트는 상태를 저장하지 않아요.
제한 사항 (Restricted)
이 컴포넌트는 제한되지 않아요.
시스템 리소스 고려 사항
이 컴포넌트는 시스템 리소스 고려 사항을 지정하지 않아요.