2012-04-17 2 views
0

프로젝트에 Apache Avro을 사용하고 있는데, 무엇을 호출하는지 이해할 수 없습니다. 지도는입니다. 내가 사용지도의 예를 찾을 수 없어, 그리고 사양의 예는 꽤 베어입니다 :avro에서지도와 레코드의 차이점은 무엇입니까?

이지도

지도 유형 이름을 사용 "map" 및 지원 하나의 속성 :

  • values:지도 값의 스키마.

지도 키는 문자열로 간주됩니다. 예를 들어

, 롱 문자열에서지도를 선언한다 :

{"type": "map", "values": "long"}

무엇 수도 JSON으로 같은 스키마 모양에 맞는 데이터? 어떤 맵을 사용하면 레코드가 더 나아지지 않는다고합니까?

답변

2

차이점은 Java가과 비교하여 명명 된 속성을 가진 POJO를 처리하는 것과 매우 유사하다는 점입니다. 즉, Map의 항목 이름은 임의의 동적 항목입니다. 그러나 데이터 유형은 모두 동일한 유형입니다 (그러나 유형을 나타내려면 java.lang.Object이 될 수 있음).

즉, 맵은 항목과 관련하여보다 다용도 적이지만 더 많은 저장 공간을 사용하며 POJO보다 처리 속도가 느립니다 (필드의 직접 인덱싱에 비해 이름 별 조회로 인해).

스키마가 필요하기 때문에 Avro 자체가 다소 강하게 입력됩니다. 스키마는 JSON과 같은 동적 형식보다 맵을 덜 사용합니다.

관련 문제