Hive 、Impala的用法相同,Hive直接輸入hive就能啟動,Impala使用Impala-shell指令進行啟動
下面用一道題進行講解這個過程:
給定一個企業對員工進行的安全教育訓練資料表TrainingRecord(如下圖),包括姓名(Name),教育訓練日期(Date)和教育訓練小時數(Hours),請寫出相應的SQL查詢回答下列問題:
(1)查詢每個員工的總教育訓練小時數,平均教育訓練時長和教育訓練次數,并給出結果集;
(2)查詢總教育訓練小時數超過8個小時的員工,并給出結果集。
Name | Date | Hours |
Tom | 2017-10-6 | 8 |
Jerry | 2017-10-6 | 8 |
Jimmy | 2017-10-6 | 4 |
Tom | 2017-10-7 | 4 |
Jerry | 2017-10-7 | 8 |
Tina | 2017-10-7 | 6 |
Jimmy | 2017-10-8 | 4 |
Allan | 2017-10-8 | 4 |
Fred | 2017-10-8 | 8 |
建立一個TrainingRocord.txt檔案,将上面的表資料放進去,使用TAB分割每個字段(下面展示我放在/home/training/Documents裡面的檔案截圖)

然後在HDFS中建立存放該檔案的檔案夾(-mkdir 後面的-p表示如果沒有上級檔案夾,就同時建立上級檔案夾)
$ hdfs dfs -mkdir -p /quiz/TrainingRecord
将之前的檔案放進去(執行這個指令的時候需要進入上面我提到的/home/training/Documents檔案夾下)
$ hdfs dfs -put TrainingRecord.txt /quiz/TrainingRecord
執行HDFS查詢語句,就能看見是否将檔案放進去(非必要,隻是作為是否放進去的确認,實際上如果不報錯,就已經放進去了)
$ hdfs dfs -ls /quiz/TrainingReocrd
查詢結果如圖(最後一行)
下面的過程在hive中執行,輸入hive啟動指令,直至指令輸入行顯示“hive>”就表示已經啟動hive
$ hive //啟動hive指令
在hive中建立表并将HDFS中的資料導入hive,terminated by '\t'是指字段用TAB分割,如果檔案中資料是以别的字元分割的話,需要修改單引号内的字元,比如改成','等。
hive> create external table trainingrecord(name STRING, dt STRING, hours INT)
row format delimited fields terminated by '\t' location '/quiz/TrainingRecord';
第一題的查詢語句
hive> select name,sum(hours),avg(hours),count(hours) from trainingrecord group by name;
查詢結果
第二題的查詢語句
hive> select name,sum(hours),from trainingrecord group by name having sum(hours)>8;
至此兩道題就完成了