HCatalog 저장 형식

HCatalog 저장 형식 (Storage Formats)

HCatalog는 데이터를 직렬화·역직렬화하기 위해 Hive의 SerDe 클래스를 사용해요. RCFile, CSV text, JSON text, SequenceFile 형식용 SerDe가 기본 제공됩니다.

출처: 문서

본문

SerDes와 저장 형식

새 버전에 포함될 수 있는 추가 SerDe는 SerDe 문서를 확인하세요. 예를 들어 Avro SerDe는 Hive 0.9.1, ORC 파일 형식은 Hive 0.11.0, Parquet은 Hive 0.10.0(플러그인)과 Hive 0.13.0(네이티브)에 추가됐어요.

사용자는 다음 지침을 따라 커스텀 형식용 SerDe를 작성할 수 있습니다.

  • Developer Guide의 How to Write Your Own SerDe
  • Hive User Group Meeting 2009년 8월, 64-70쪽
  • 입력·출력 처리에 대한 세부 사항은 SerDe 문서 참고

커스텀 또는 네이티브 SerDe로 테이블을 만드는 방법은 Row Format, Storage Format, and SerDe 문서를 참고하세요.

Hive에서 사용하기 (Usage from Hive)

Hive와 HCatalog(버전 0.4 이상)는 동일한 저장 추상화를 공유해요. 따라서 Hive 안에서 HCatalog 테이블을 읽고 쓸 수 있고 그 반대도 가능합니다.

단, HCatalog 0.4·0.5에서는 Hive가 기본적으로 HCatalog jar의 위치를 알지 못해요. JSON SerDe를 사용하는 테이블처럼 HCatalog가 도입한 기능을 쓰면 "class not found" 예외가 날 수 있습니다. 이런 경우 Hive 실행 전에 환경 변수 HIVE_AUX_JARS_PATH를 HCatalog jar가 있는 디렉토리로 설정하세요. (설치 문서의 예시를 따랐다면 /usr/local/hcat/share/hcatalog/여야 해요.) 버전 0.5 이후로 HCatalog는 Hive 배포의 일부가 되어 HIVE_AUX_JARS_PATH에 jar를 추가할 필요가 없어졌습니다.

JSON SerDe와 CTAS 이슈

CREATE TABLE ... AS SELECT 명령을 JSON SerDe와 함께 사용하면 _col0 같은 컬럼 헤더가 생긴 테이블이 만들어져요. 이 테이블은 HCatalog나 Hive가 읽을 수는 있지만 외부 사용자가 쉽게 읽을 수는 없습니다. 이 문제를 피하려면 CTAS 대신 테이블을 두 단계로 나눠 만드세요.

CREATE TABLE ...
INSERT OVERWRITE TABLE ... SELECT ...

자세한 내용은 HCATALOG-436을 참고하세요.

Navigation Links: Previous: Command Line Interface / Next: Dynamic Partitioning. SerDe 일반 정보: Hive SerDe, SerDe 세부: SerDe, SerDe DDL: Row Format, Storage Format, and SerDe

더 알아보기 (Learn more)

SerDe는 데이터를 행으로 어떻게 직렬화/역직렬화할지 결정해요. HCatalog는 Hive와 저장 추상화를 공유하므로, SerDe 지식을 익혀두면 Hive와 HCatalog 어디서든 동일하게 적용할 수 있습니다.