Hive는 아래와 같이 2가지 방식에 데이터타입을 지원


1. Primitive data types


   1) Numeric data type

       - tinyint : 1-byte

       - smallint : 2-byte

       - int : 4-byte

       - bigint : 8-byte

       - float : 4-byte single-precision

       - double : 8-byte double-precision

       - decimal : 17-byte (38 digits)


       create table test (id bigint, price decimal(10,2));


   2) String data type

       - string    :  sequence of characters

       - varchar  :  variable-length character (1 ~ 65355 )

       - char      : fixed-length character ( 1 ~ 255 )


   3) Date/Time data type

       - Timestamp : YYYY-MM-DD HH:MM:SS.fffffffff

       - Date : YYYY-MM-DD 

         (Date 타입은 Date, Timestamp, String으로 변환가능)

 

       create table test (id int, created_dt date, update_dt timestamp);


   4) etc

       - Boolean : true or false

       - Binary : sequence of bytes 


2. Complex data tyeps


   1) Struct : similar c struct type.

       struct < column : data_type(primitive type), .........>

       struct_coumn.column로 참조        

       

       create table test1 (id int, name struct<first:string, last:string>);


   2) Map : key-value pairs

 map_column->name


   3) Array : ordered sequece of similar elements like string..

       t[ 'a', 'b','c' ], t[0], t[1]

   

   4) UNIONTYPE : store different data types.

       uniontype<data type,.....>

       

       create table test2(c1 uniontype<int, double, array<string>, struct<age:int, country:string>>);


3. operators

   1) 비교 연산

      - A = B

      - A != B

      - A <=> B : A and B NUL 이면 true

      - A <> B

      - A< B : A or B가 NULL이면 NULL, A < B이면 TRUE

      - A <= B 

      - A >= B

      - A between B and C : A or B or C 가 NULL 이면 NULL

      - A not between B and C

      - A is null 

      - A is not null

      - A like B : A or B가 NULL이면 NULL

      - A not like B 

      - A RLIKE B  : A or B가 NULL이면 NULL, A의 substring이 B에 매칭되면 true

      - A regexp B 


  2) 산술 연산

      A or B중 NULL이면 결과 NULL이고 모든 연산의 결과는 숫자

      A + B , A-B, A*B...

 

      hive> select 10+10 from test;



  3) 논리 연산

      연산자는 AND, OR이며 모든 결과는 TRUE, FALSE이며, operand중 NULL이면 

      결과도 NULL

      A and B, A && B, A OR B, ! A , A IN (v1, v2..), A in (subquery)

      A not in (v1, v2..), A not in (subquery), exists (subquery), 

      not exists (subquery)


  4) 복잡 연산

      A[i], B[key], C.a


      select A[2] from test;

      select C.a from test;






   

'NoSQL > Hive' 카테고리의 다른 글

Hive 구성  (0) 2016.06.13
Hive metastore  (0) 2016.06.13
Hive 구성  (0) 2016.06.10
Hive 파티션  (0) 2016.06.09
Troubleshooting hive  (0) 2016.06.08

+ Recent posts