sourcecode

Avro 스키마에 옵션 필드를 포함할 수 있습니까(즉, 필드가 .json 파일에 전혀 표시되지 않음).

codebag 2023. 2. 11. 09:17
반응형

Avro 스키마에 옵션 필드를 포함할 수 있습니까(즉, 필드가 .json 파일에 전혀 표시되지 않음).

Avro 스키마에 옵션필드를 설정할 수 있습니까(즉, 필드는 에 전혀 표시되지 않습니다).JSON 파일)?

Avro 스키마에는 다음 두 개의 필드가 있습니다.

{"name": "author", "type": ["null", "string"], "default": null},
{"name": "importance", "type": ["null", "string"], "default": null},

JSON 파일에는 이 두 필드가 존재할 수도 있고 존재하지 않을 수도 있습니다.

그러나 존재하지 않는 경우 다음과 같은 오류가 발생합니다(예를 들어 avro-tools 명령줄 클라이언트를 사용하여 이러한 JSON 파일을 테스트하는 경우).

Expected field name not found: author

필드명이 JSON에 존재하는 한, 이 필드명은null, 또는string여기서 나타내는 것은 "이 JSON은 필드명이 존재하지 않는 경우 유효하다" 또는 "이 필드명이 존재하고 늘 또는 문자열인 경우 유효하다"와 같은 것입니다.

Avro 스키마로 표현할 수 있나요?만약 그렇다면, 어떻게?

기본 속성을 정의되지 않은 예로 정의할 수 있으므로 필드를 건너뛸 수 있습니다.

{ 
   "name": "first_name",
   "type": "string",
   "default": "undefined"
},

또한 모든 분야는 avro에서 조작이다.옵션인 경우 해당 유형을 null과 결합합니다.예:

{
    "name": "username",
    "type": [
      "null",
      "string"
    ],
    "default": null
},

avro 사양에 따르면 이는 기본 속성을 사용하여 가능합니다.

https://avro.apache.org/docs/1.8.2/spec.html 를 참조해 주세요.

default: 이 필드의 기본값. 이 필드가 없는 인스턴스를 읽을사용됩니다(옵션).아래 표에 따라 허용되는 값은 필드의 스키마 유형에 따라 달라집니다.유니언 필드의 기본값은 유니언의 첫 번째 스키마에 해당합니다.

이 예에서는 값이 "null"인 기본 속성을 추가하므로 이 기능이 작동합니다.단, 이 지원은 avro 메시지 읽기에 사용하는 라이브러리에 따라 달라집니다(c,c++,python,java,c#,ruby 등에 라이브러리가 있습니다).사용하고 있는 라이브러리에는, 이 기능이 없는 경우가 있습니다.

언급URL : https://stackoverflow.com/questions/29299610/is-it-possible-to-have-an-optional-field-in-an-avro-schema-i-e-the-field-does

반응형