Hive  Serde


Serde 란 ?

직렬화와 역직렬화를 뜻하며, HDFS  HIVE 간의 데이터 교환을 뜻한다.

역직렬화(Deserializer)

HDFS files  ▶ InputFileFormat  <key, value>  Deserializer  Row object

HDFS 의 파일을 Hive 테이블에 저장

 

직렬화(Serializer)

Row object  Serializer  <key, value>  OutputFileFormat  HDFS files

Hive 테이블의 정보를 HDFS 의 파일로 저장


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

하이브(hive) udf  (0) 2014.11.25
Hive 의 Serde 2  (0) 2014.11.25
MapReduce 데이터 흐름 분석  (0) 2014.11.25
Mapper 클래스 구성 및 사용  (0) 2014.11.22
여러 기능의 맵리듀스를 하나의 jar 로 묶을때  (0) 2014.11.22

 

 

 

 

test.txt 에 아래와 같은 데이터가 있다면

1,2,1,2

B,A,B,A

3,3,2,3

A,B,B,B

 

$ hadoop fs -put test.txt /user/test.txt

를 통해 hdpf 에 저장되어 있다 가정하자

이때 아래와 같이 2개의 datanode 로 데이터가 분산되어 있다면

 

datanode 1의 데이터는

1,2,1,2

B,A,B,A

 

datanode 2의 데이터는

3,3,2,3

A,B,B,B

 

이렇게 분산되어 있다라고 가정하자.

 

 

 

이 데이터의 최빈도(가장 많은 단어 mode)를 획득하려고 한다. 그래서 아래와 같이 구현했다고 가정하자

mapper 에서는 각 데이터를 분할하고

reduce 에서는 각 데이터의 최종합을 구하도록  mapreduce 

 

 

mapper 의 input 은 해당 데이터의 line 별로 입력된다.

보통 입력된 데이터를 필요한 포맷으로 split 하여 사용한다. 여기서는 , 로 split 한다.

 

즉 datanode 1 의 mapper 에서는  

1)   1,2,1,2

2)   B,A,B,A

이러한 데이터로 두번 mapper 의 map 메소드가 호출되고

 

즉 datanode 2 역시

1)   3,3,2,3

2)   A,B,B,B

이러한 데이터로 두번 mapper 의 map 메소드가 호출된다.

 

 이동작을 표로 구분하면 다음과 같다.

 

1. combiner 가 없는 경우

 

동작

데이터노드1

데이터노드 2

HDFS 데이터

1,2,1,2

B,A,B,A

3,3,2,3

A,B,B,B

Mapper 의 map 메소드 입력

1,2,1,2

3,3,2,3

B,A,B,A

A,B,B,B

Mapper 의 map 메소드 출력

(1, NullWritable)

(3, NullWritable)

(2, NullWritable)

(3, NullWritable)

(1, NullWritable)

(2, NullWritable)

(2, NullWritable)

(3, NullWritable)

(B, NullWritable)

(A, NullWritable)

(A, NullWritable)

(B, NullWritable)

(B, NullWritable)

(B, NullWritable)

(A, NullWritable)

(B, NullWritable)

Shuffle(key 로 sorting)

Reducer 

reduce 메소드의 입력

NullWritable => N 으로 기술

(1, [N,N])

(2, [N,N,N])

(3, [N,N,N])

(A, [N,N,N])

(B, [N,N,N,N,N])

Reducer 

reduce 메소드의 출력(최빈도) 

(B, 5)

 

 

 

 2. combiner 를 구현한 경우

combiner 에서는 value 를 각 단어의 개수를 저장함

 

동작

데이터노드1

데이터노드 2

HDFS 데이터

1,2,1,2

B,A,B,A

3,3,2,3

A,B,B,B

Mapper 의 map 메소드 입력

1,2,1,2

3,3,2,3

B,A,B,A

A,B,B,B

Mapper 의 map 메소드 출력

(1, NullWritable)

(3, NullWritable)

(2, NullWritable)

(3, NullWritable)

(1, NullWritable)

(2, NullWritable)

(2, NullWritable)

(3, NullWritable)

(B, NullWritable)

(A, NullWritable)

(A, NullWritable)

(B, NullWritable)

(B, NullWritable)

(B, NullWritable)

(A, NullWritable)

(B, NullWritable)

Combiner 

reduce 메소드의 입력

NullWritable => N 으로 기술

 

(1, [N,N])

(2, [N])

(2, [N,N])

(3, [N,N,N])

(A, [N,N])

(A, [N])

(B, [N,N])

(B, [N,N,N])

Combiner 

reduce 메소드의 출력

 

(1, 2)

(2, 1)

(2, 2)

(3, 3)

(A, 2)

(A, 1)

(B, 2)

(B, 3)

Shuffle(key 로 sorting)

Reducer 

reduce 메소드의 입력

(1, [2])

(2, [2, 1])

(3, [3])

(4, [1])

(A, [2, 1])

(B, [2, 3])

Reducer 

reduce 메소드의 출력 (최빈도) 

(B, 5)

 

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

Hive 의 Serde 2  (0) 2014.11.25
Hive 의 Serde 1  (0) 2014.11.25
Mapper 클래스 구성 및 사용  (0) 2014.11.22
여러 기능의 맵리듀스를 하나의 jar 로 묶을때  (0) 2014.11.22
Hadoop 의 Counter 이야기  (0) 2014.11.22

+ Recent posts