[PYTHON] Avro 스키마에 레코드를 중첩하는 방법은 무엇입니까?
PYTHONAvro 스키마에 레코드를 중첩하는 방법은 무엇입니까?
파이썬이 다음과 같은 아 브로 스키마를 파싱하도록하고있다.
from avro import schema
mySchema = """
{
"name": "person",
"type": "record",
"fields": [
{"name": "firstname", "type": "string"},
{"name": "lastname", "type": "string"},
{
"name": "address",
"type": "record",
"fields": [
{"name": "streetaddress", "type": "string"},
{"name": "city", "type": "string"}
]
}
]
}"""
parsedSchema = schema.parse(mySchema)
... 그리고 다음과 같은 예외가 있습니다 :
avro.schema.SchemaParseException: Type property "record" not a valid Avro schema: Could not make an Avro Schema object from record.
내가 뭘 잘못하고 있죠?
해결법
-
==============================
1.웹의 다른 출처에 따르면 두 번째 주소 정의를 다시 작성합니다.
웹의 다른 출처에 따르면 두 번째 주소 정의를 다시 작성합니다.
mySchema = """ { "name": "person", "type": "record", "fields": [ {"name": "firstname", "type": "string"}, {"name": "lastname", "type": "string"}, { "name": "address", "type": { "type" : "record", "name" : "AddressUSRecord", "fields" : [ {"name": "streetaddress", "type": "string"}, {"name": "city", "type": "string"} ] }, } ] }"""
-
==============================
2.명명 된 유형으로 유형을 제공 할 때마다 필드를 다음과 같이 지정해야합니다.
명명 된 유형으로 유형을 제공 할 때마다 필드를 다음과 같이 지정해야합니다.
"name":"some_name", "type": { "name":"CodeClassName", "type":"record/enum/array" }
그러나 명명 된 유형이 공용체 인 경우 추가 유형 필드가 필요하지 않으므로 다음과 같이 사용할 수 있어야합니다.
"name":"some_name", "type": [{ "name":"CodeClassName1", "type":"record", "fields": ... }, { "name":"CodeClassName2", "type":"record", "fields": ... }]
희망이 더 명확하게!
from https://stackoverflow.com/questions/11764287/how-to-nest-records-in-an-avro-schema by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Jinja2 템플릿 언어에 '여기'(현재 디렉토리)라는 개념이 있습니까? (0) | 2018.11.07 |
---|---|
[PYTHON] `import __main__`을 사용하는 것이 좋은 습관입니까? (0) | 2018.11.07 |
[PYTHON] 객체를위한 팩토리 메소드 - 모범 사례? (0) | 2018.11.06 |
[PYTHON] Tkinter 프레임 크기 조정 (0) | 2018.11.06 |
[PYTHON] 파이썬에서 주어진 문자열에 주어진 문자열에 문자열을 삽입하십시오. (0) | 2018.11.06 |