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.delim과 mapkey.delim은 각각 컬렉션 항목과 키-값 쌍을 구분하는 구분자예요.
HIVE-20619에서는 릴리스 4.0.0에서 MultiDelimitSerDe를 hive.serde2로 옮겨서, 사용자가 hive-contrib JAR을 HiveServer2 auxiliary 디렉터리에 설치하지 않아도 되도록 했어요.
제한 사항 (Limitations)
- 구분자 중
field.delim은 필수이며 여러 문자를 사용할 수 있는 반면,collection.delim과mapkey.delim은 선택 사항이고 단일 문자만 지원해요. - 중첩 복합 타입(nested complex type)은 지원되지 않아요. 예:
Array<Array>. - Hive 4.0.0 이전 릴리스에서
MultiDelimitSerDe를 사용하려면add jar명령 등을 이용해hive-contribJAR을 클래스패스에 추가해야 해요.
더 알아보기 (Learn more)
MultiDelimitSerDe는 [,]처럼 여러 문자로 이루어진 구분자를 지원하기 때문에, CSV·TSV처럼 단순한 형식이 아닌 외부 파일을 읽을 때 유용해요. 단, 컬렉션·맵 구분자는 한 글자만 허용하고 중첩 복합 타입은 지원하지 않는다는 제약을 기억하세요.