본문 바로가기

Coursera 강의 정리/Modern Big Data Analysis with SQL

S3 Managing Big Data in Clusters and Cloud Storage - W3 Data Types and File Types

Modern Big Data Analysis with SQL 특화 과정 중 세 번째 강의 Managing Big Data in Clusters and Cloud Storage

 번째 주차 Data Types and File Types 내용 정리입니다.

 

Data Type은 숫자 데이터를 위한 TINYINT, INT, BIGINT / FLOAT, DOUBLE, DECIMAL과 문자 데이터를 위한 CHAR, VARCHAR, STRING이 있다.

File Type
은 테이블의 데이터를 저장하는 파일 형식으로 빅 데이터 시스템에서는 AVROPARQUET를 권장한다. 상호 호환성과 성능에 있어서 준수하다.

Data Type

외부로부터 파일을 읽어 들여서 테이블을 생성하거나 새로운 테이블을 생성할 때 필드에 대한 데이터 타입을 지정한다. 데이터 타입을 정할 때 다음과 같은 사항을 유의한다.

 

1)     가능한 범위를 만족하는 최소한의 크기의 숫자형 데이터 타입(TINYINT, INT, BIGINT)을 선택한다.

2)     Precision이 정확히 필요한 경우 FLOAT, DOUBLE 대신에 DECIMAL을 사용한다.

3)     Hive, Impala에서는 문자열을 나타내는 데이터 타입으로 STRING을 사용하는 것을 권장한다.

4)     DATE 데이터 타입은 Impala에서 지원하지 않는다.

 

대표적인 데이터 타입은 숫자 데이터를 위한 데이터 타입과 문자 데이터를 위한 데이터 타입이 있다.

 

1)     숫자 데이터: TINYINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL

2)     문자 데이터: CHAR, VARCHAR, STRING

 

Hive와 Impala에서 숫자 데이터 타입의 오버플로우 처리가 다른다. Hive는 오버플로우 데이터에 대해서 NULL을 반환하는 반면 Impala는 데이터 타입이 나타낼 수 있는 최댓값/최솟값을 반환한다.

File Type

테이블의 데이터는 궁극적으로 파일 시스템의 파일로 저장된다. 저장되는 파일 형식은 STORED AS로 지정하며 TEXTFILE, AVRO, PARQUET, ORCFILE이 있다.

 

1)     TEXTFILE: 일반적인 파일 타입. 사람이 읽을 수 있으며 상호 호환성이 좋다. 하지만 성능은 비효율적이다

2)     AVRO: 빅 데이터를 위한 파일 타입. Schema Evolution이 있어서 열을 추가, 삭제, 변경이 가능하다. 상호 호환성과 성능 모두 준수하다.

3)     PARQUET: 빅 데이터를 위한 파일 타입. 데이터를 열 단위로 저장하기 때문에 빠른 질의 처리가 가능하다. 상호 호환성과 성능 모두 준수하다.

4)     ORCFILE: PARQUET와 유사한 파일 타입. Hive에서만 지원한다.

 

Key-Value로 저장하며 Hadoop Ecosystem에서 활용되는 SEQUENCEFILE과 열 단위로 데이터를 관리하는 RCFILE 파일 타입이 있지만 잘 활용되지 않는다.

 

파일 타입을 결정할 때에는 상호 호환성을 고려한다. 저장하는 시간이 길거나 다른 도구에서도 데이터를 사용할 여지가 있다면 상호 호환성이 좋은 파일 타입(AVRO, PARQUET)으로 데이터를 저장하는 것이 좋다.