-- 테이블 생성
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"}
'빅데이터 > hive' 카테고리의 다른 글
[hive] 하이브의 CSV 서데 사용 방법 (0) | 2017.03.08 |
---|---|
[hive] 하이브 테이블에 데이터 입력 방법 (0) | 2017.02.21 |
[hive] order by, sort by, cluster by 의 차이 (0) | 2017.02.14 |
[hive][tez] tez 처리중 tez.lib.uris is not defined in the configuration 오류 수정 (0) | 2017.02.07 |
[hive] 다이나믹 파티션의 __HIVE_DEFAULT_PARTITION__ (0) | 2017.02.02 |