Hive 데이터 타입
· Version : Hive
Hive는 여러 크기의 정수형과 부동소수점, 불린형과 임의의 길이를 가지는 문자열, TIMESTAMP, BINARY 타입등을 제공한다. 각각의 데이터형은 자바로 구현되어 있어 자바 데이터 타입과 동일하게 하이브에서 사용된다.
타입 |
크기 |
리터럴 문법 예제 |
TINYINT |
1바이트 정수형 |
20 |
SMALLINT |
2바이트 정수형 |
20 |
INT |
4바이트 정수형 |
20 |
BGINT |
8바이트 정수형 |
20 |
BOOLEAN |
TRUE 또는 FALSE |
TRUE |
FLOAT |
단정도 부동 소수점 |
3.14159 |
DOUBLE |
배정도 부동 소수점 |
3.14159 |
STRING |
문자의 시퀀스, 또는 문자열 설정가능. 작은 따옴표 및 큰따옴표 사용가능 |
‘Hello Hive’, “Hello Hive” |
TIMESTAMP |
정수형, 부동소수점, 문자열형 |
유닉스 TIMESTAMP, JDBC 호환 java SQL Timestamp 포맷. 소수점 9자리(nano second) 까지 가능 |
BINARY |
바이트 배열의 형태 지원 |
|
BYNARY 데이터형은 관계형 데이터베이스의 VARBINARY와 비슷하지만 관계형 데이터베이스는 BLOB 데이터 형은 별도의 저장소에 보관하는반면에, 하이브는 BINARY 데이터형의 데이터를 레코드에 모두 저장한다.
하이브는 다른 SQL 호환 언어처럼, 데이터형 이름의 대소문자 구분을 무시한다. 하지만 SQL 에서 일반적으로 지원하는 최대 허용 길이를 갖는 “문자배열”을 지원하지 않는다. 관계형 데이터베이스와 목적이 다를뿐더러 다양한 파일 포맷을 지원해야 하기 때문에 필드를 구분할 수 있는 구분기호에 의존한다. 또한 하둡 및 하이브는 디스크의 읽기, 쓰기 성능 최적화를 강조하기 때문에 컬럼값이 길이를 고정하는것은 상대적으로 중요하지 않다.
하이브에서 단점도 부동소수점(FLOAT)와 배정도 부동소수점(DOUBLE) 컬럼을 비교하거나, 정수형 값을 비교하는 쿼리를 실행하면, 묵시적으로 두 개의 데이터 타입중에 더 큰 크기의 데이터 타입으로 변환하여, 동일한 데이터 타입으로 만든 후 비교한다. 문자열의 값을 숫자로 해석하려는 경우 명시적으로 다른 데이터형으로 변환하여 사용할 수 있다.
하이브는 struct, map, array 같은 컬럼을 지원한다. 또한 컬렉션 데이터 타입의 이름 대소문자 구분을 무시한다.
타입 |
설명 |
리터럴 문법 예제 |
STRUCT |
C 의 구조체나 객체와 유사. 각 필드는 점 표기법으로 사용 |
struct(‘Sungwook’, ‘Kang’) |
MAP |
Key-Value 처럼 필드를 배열 표기법으로 사용 |
map(‘first’,’Sungwook’,’last’,’Kang’) |
ARRAY |
0으로 시작하는 정수로 색인할 수 있는 동일한 데이터형의 순차 시퀀스 |
array(‘Sungwook’, ’Kang’) |
하이브는 키 개념을 가지고 있지 않다. 하지만 색인 테이블은 사용이 가능하다. 컬렉션 데이터 타입은 자바의 제네릭(generics) 문법 규칙을 따를 것에 유의해야한다. 예를들어 MAP<STRING, FLOAT>의 모든 키는 STRING 데이터 타입을 가지고, 모든 값은 FLOAT 이다. ARRRAY <STRING>도 마찬가지로 모든 아이템은 STRING 데이터 타입을 가진다. STRUCT는 서로 다른 데이터 타입을 섞어 사용할 수 있으나 STRUCT 안에서 선언된 위치는 고정된다.
[참고자료]
· Hive Data Types : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types
2020-06-08 / Sungwook Kang / http://sungwookkang.com
Hadoop, Big Data, 하둡, 빅데이터, 데이터분석, HDFS, 하둡 파일 시스템, Hive, 하이브, 하이브 데이터 타입
'SW Engineering > Hadoop' 카테고리의 다른 글
Hive 텍스트파일 인코딩 (0) | 2020.06.12 |
---|---|
Impala Connection refuse Error (0) | 2020.06.12 |
HDFS 데이터 저장소에는 RAID구성이 필요할까 (0) | 2020.06.08 |
Hive에서 하둡(dfs)명령 실행 (0) | 2020.05.19 |
ZooKeeper 옵저버와 CLI (0) | 2020.05.19 |