빅데이터/hive

[hive] 하이브 테이블 생성하기

hs_seo 2017. 2. 21. 14:45

-- 테이블 생성

CREATE TABLE employee (

  id            String,

  name       String,

  lists         ARRAY<STRING>,

  maps       MAP<STRING, STRING>

ROW FORMAT DELIMITED 

  FIELDS TERMINATED BY '\t'                 -- 칼럼을 구분하는 기준

  ESCAPED BY '\\'                               -- 값을 입력하지 않음

  COLLECTION ITEMS TERMINATED BY ','   -- 리스트를 구분하는 기준

  MAP KEYS TERMINATED BY '='              -- 맵데이터의 키와 밸류를 구분하는 기준

  LINES TERMINATED BY '\n'                  -- 로(row)를 구분하는 기준

  NULL DEFINED AS 'null'                       -- null 값을 표현(0.13 버전에서 추가)

  ;


-- 생성한 테이블에 데이터 입력(hdfs 상의 데이터는 local을 빼고, 덮어 쓰지 않을경우 overwrite 를 빼고 입력)

LOAD DATA LOCAL INPATH '경로' OVERWRITE INTO TABLE 테이블명;


하이브에서 테이블을 생성할때 기본 서데(SerDe)를 이용하여 입력한 데이터를 구분할 때 

ROW FORMAT DELIMITED를 이용하여 처리가 가능하다. 


위와 같이 테이블을 생성하면 아래와 같이 확인이 가능하다. 


hive>CREATE TABLE employee (

    >   id         String,

    >   name       String,

    >   lists      ARRAY<STRING>,

    >   maps       MAP<STRING, STRING>

    > ) 

    > ROW FORMAT DELIMITED 

    >   FIELDS TERMINATED BY '\t'

    >   ESCAPED BY '\\'

    >   COLLECTION ITEMS TERMINATED BY ','

    >   MAP KEYS TERMINATED BY '='

    >   LINES TERMINATED BY '\n'

    >   NULL DEFINED AS 'null'

    >   ;

OK

Time taken: 0.402 seconds


<test.cav 내용>

id-1 john a,b,c,d k1=v1,k2=v2

id-2 sam e,f,g,h k3=v3,k4=v4

id-3 david i,j,k,l k5=v5,k6=v6

id-4 k7=v7


hive> 

    > load data local inpath '/home/test.csv' overwrite into table employee;

Loading data to table employee

OK

Time taken: 0.671 seconds



hive> select * from employee;

OK

id-1 john ["a","b","c","d"] {"k1":"v1","k2":"v2"}

id-2 sam ["e","f","g","h"] {"k3":"v3","k4":"v4"}

id-3 david ["i","j","k","l"] {"k5":"v5","k6":"v6"}

id-4 [] {"k7":"v7"}




반응형