2014-10-17 3 views

답변

2

Hive는 기본적으로 HDFS에있는 데이터에 스키마를 적용하기 때문에 HDFS에서 위치를 만들고 데이터를 이동 한 다음 해당 위치를 가리키는 하이브 테이블을 만들어야합니다. 상업용 배포판을 사용하는 경우 Hue (Hadoop 사용자 환경 웹 UI)에서 가능할 수 있습니다.

다음은 명령 줄의 예입니다.

은 로컬 컴퓨터에서 csv 파일 만들기 :

$ vi famous_dictators.csv 

을 ... 그리고이 파일이 모습입니다 같은 : 다음

$ cat famous_dictators.csv 
1,Mao Zedong,63000000 
2,Jozef Stalin,23000000 
3,Adolf Hitler,17000000 
4,Leopold II of Belgium,8000000 
5,Hideki Tojo,5000000 
6,Ismail Enver Pasha,2500000 
7,Pol Pot,1700000 
8,Kim Il Sung,1600000 
9,Mengistu Haile Mariam,950000 
10,Yakubu Gowon,1100000 

scp 클러스터 노드에 csv 파일 :

$ scp famous_dictators.csv hadoop01:/tmp/ 

ssh 노드로 :

(210)
$ ssh hadoop01 

HDFS에서 폴더 만들기 :

[[email protected] ~]$ hdfs dfs -mkdir /tmp/famous_dictators/ 

복사 HDFS 폴더에 로컬 파일 시스템에서 csv 파일 :

[[email protected] ~]$ hdfs dfs -copyFromLocal /tmp/famous_dictators.csv /tmp/famous_dictators/ 

가 다음 하이브 테이블을 작성하려면 로그인 :

[[email protected] ~]$ hive 

hive> CREATE TABLE `famous_dictators`(
    > `rank` int, 
    > `name` string, 
    > `deaths` int) 
    > ROW FORMAT DELIMITED 
    > FIELDS TERMINATED BY ',' 
    > LINES TERMINATED BY '\n' 
    > LOCATION 
    > 'hdfs:///tmp/famous_dictators'; 

이제 하이브에서 데이터를 쿼리 할 수 ​​있습니다 :

hive> select * from famous_dictators; 
OK 
1 Mao Zedong 63000000 
2 Jozef Stalin 23000000 
3 Adolf Hitler 17000000 
4 Leopold II of Belgium 8000000 
5 Hideki Tojo 5000000 
6 Ismail Enver Pasha 2500000 
7 Pol Pot 1700000 
8 Kim Il Sung 1600000 
9 Mengistu Haile Mariam 950000 
10 Yakubu Gowon 1100000 
Time taken: 0.789 seconds, Fetched: 10 row(s) 
+0

알렉스 덕분에 ... – sam

+0

나는 그것을 듣고 기쁩니다. 잘 했어! –

관련 문제