MultiDelimitSerDe

MultiDelimitSerDe

소개

HIVE-5871에서 도입된 MultiDelimitSerDe는 테이블을 만들 때 여러 문자(multiple-character string)를 필드 구분자(delimiter)로 지정할 수 있게 해 주는 SerDe예요. 기존의 한 글자 구분자만 허용하던 제약을 넘어 복잡한 구분자를 쓸 수 있습니다.

출처: 문서

본문

버전 (Version)

Hive 0.14.0 이상에서 사용할 수 있어요.

Hive QL 구문 (Hive QL Syntax)

다음과 같이 create table 문에서 MultiDelimitSerDe를 사용할 수 있어요.

CREATE TABLE test (
 id string,
 hivearray array<binary>,
 hivemap map<string,int>) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.MultiDelimitSerDe'                  
WITH SERDEPROPERTIES ("field.delim"="[,]","collection.delim"=":","mapkey.delim"="@");

여기서 field.delim은 필드 구분자이고, collection.delimmapkey.delim은 각각 컬렉션 항목과 키-값 쌍을 구분하는 구분자예요.

HIVE-20619에서는 릴리스 4.0.0에서 MultiDelimitSerDehive.serde2로 옮겨서, 사용자가 hive-contrib JAR을 HiveServer2 auxiliary 디렉터리에 설치하지 않아도 되도록 했어요.

제한 사항 (Limitations)

  • 구분자 중 field.delim은 필수이며 여러 문자를 사용할 수 있는 반면, collection.delimmapkey.delim은 선택 사항이고 단일 문자만 지원해요.
  • 중첩 복합 타입(nested complex type)은 지원되지 않아요. 예: Array<Array>.
  • Hive 4.0.0 이전 릴리스에서 MultiDelimitSerDe를 사용하려면 add jar 명령 등을 이용해 hive-contrib JAR을 클래스패스에 추가해야 해요.

더 알아보기 (Learn more)

MultiDelimitSerDe[,]처럼 여러 문자로 이루어진 구분자를 지원하기 때문에, CSV·TSV처럼 단순한 형식이 아닌 외부 파일을 읽을 때 유용해요. 단, 컬렉션·맵 구분자는 한 글자만 허용하고 중첩 복합 타입은 지원하지 않는다는 제약을 기억하세요.