2014-10-17 110 views

回答

2

由於Hive基本上將模式應用於駐留在HDFS中的數據,因此您需要在HDFS中創建一個位置,將數據移動到那裏,然後創建一個指向該位置的Hive表。如果您使用的是商業版本,Hue(Hadoop用戶環境網絡用戶界面)可能會有這種情況。

下面是命令行的示例。

創建本地計算機上的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進入節點:

$ 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中查詢您的數據:

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 2014-10-21 04:52:22

+0

我很高興聽到,山姆。做得好! – 2014-10-21 04:56:27

相關問題