예제파일 : TemplateSerde.java


Serde 구현

 

기존방법

권고방법

비고

차이점

인터페이스를 상속하여 구현(implements)

곧 Deprecated 예정 

추상화 클래스를 상속하여 구현(extends)

인터페이스에서 추상화 클래스로 변경됨(클래스 위치: org.apache.hadoop.

hive.serde2)

직렬화/역직렬화

모두 구현시 상속

SerDe 인터페이스 상속

곧 Deprecated 예정 

 

AbstractSerDe 추상화클래스 상속하여 구현(extends)

동일 구현 메소드

Initialize

getSerializedClass

serialize

deserialize

getObjectInspector

getSerDeStats

직렬화만 구현

Serializer 인터페이스 상속

AbstractSerializer 추상화클래스 상속하여 구현(extends)

구현 메소드

Initialize

getSerializedClass

serialize

getSerDeStats

역직렬화만 구현

Deserializer 인터페이스 상속

 

AbstractDeserializer 추상화클래스 상속하여 구현(extends)

 

구현 메소드

Initialize

deserialize

getObjectInspector

getSerDeStats

 

1). 공통구현 메소드

 

- Initialize

 

해당 테이블의 컬럼 개수컬럼의 Type 정보를 얻을 수 있으며기본 구분자는 “,” 를 사용한다. 

 

 

- getSerDeStats

 

row 수 사이즈 등을 저장한 정보를 제공(불필요시에 Null 을 리턴)

 

 

 

2) 직렬화 구현 메소드

 

- getSerializedClass

 

HDFS 에 저장시 사용될 Writable을 상속한 클래스를 정의하여 리턴한다.

 

- serialize

 

테이블이 조회되어 한 row 에 대한 정보가 들어오며 해당 정보를 조합하여 HDFS 에 저장될 Line 을 생성한다.

 

 

 

3) 역직렬화 구현 메소드

 

- getObjectInspector

 

Table 에 저장될 각 컬럼의 타입을 저장하여 리턴한다.

 

- deserialize

 

HDFS 에서 조회된 한 Line 별 정보가 입력되며 해당 값을 필요에 따라 Parsing 하여 테이블에 저장될 구조의 array 를 만들어서 리턴한다.

 

 

 

2실행

 

1) 직렬화

 

※ 직렬화 jar 의 경우 HDFS 에서 사용하기 때문에 경로에 대한 path 또는 HDFS 에서 사용하는 jar 에 포함 시켜야함

 

1-1) 실행

 

INSERT OVERWRITE LOCAL DIRECTORY '저장될 LOCAL 경로’ ROW FORMAT SERDE ‘등록한 직렬화클래스’ SELECT * FROM 테이블명;

 

※ INSERT OVERWRITE DIRECTORY 처럼 LOCAL 을 생략시 HDFS 에 저장됨단 구현한 직렬화 클래스가사용안됨

 

1-2) 확인

 

LOCAL syntax 사용 여부에 따라 로컬 경로 또는 hdfs 의 경로로 해당 파일 조회(000000_0 으로 해당 폴더에 파일이 생성됨)


 

2) 역직렬화

 

2-1) 해당 Serde 을 하이브에 등록한다.

 

Add jar ./파일명.jar

 

2-2) Table 을 생성한다.

 

Create table IF NOT EXISTS 테이블명 {

 

Id STRING,

 

name STRING

 

..(이와 같은 형태로 테이블의 구조를 생성)

 

}

 

ROW FORMAT SERDE ‘등록할 역직렬화가 구현된 클래스


3) HDFS 의 데이터 로드

 

Syntax> LOAD data <LOCAL> inpath <file path> into table [tablename]

 

LOAD DATA INPATH 'HDFS 상의 데이터 경로' OVERWRITE INTO TABLE 생성한 테이블명;


4) 확인

SELECT * from 생성한 테이블명;




'IT > 빅데이터(bigData)' 카테고리의 다른 글

hive 에서 형변환 함수  (0) 2014.12.02
하이브(hive) udf  (0) 2014.11.25
Hive 의 Serde 1  (0) 2014.11.25
MapReduce 데이터 흐름 분석  (0) 2014.11.25
Mapper 클래스 구성 및 사용  (0) 2014.11.22

+ Recent posts