近期,因統計分析、數據處理的工作需求,經常使用Hive SQL,因此記錄遇到的一些問題。
1、desc formatted 表名
----確定表的信息(行、列、存儲路徑),在確定Hive 數據倉庫中表的存儲路徑時,很有幫助。
2、SQL GROUP BY 兩個字段
group by 一般和聚合函數一起使用纔有意義,比如 count sum avg等,使用group by的兩個要素:
(1) 出現在select後面的字段 要麼是是聚合函數中的,要麼就是group by 中的.
(2) 要篩選結果 可以先使用where 再用group by 或者先用group by 再用having
例子
表;
Table:
Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
每門學科有多少同學選擇,以下SQL
SELECT Subject, Count(*)
FROM Subject_Selection
GROUP BY Subject;
result:
Subject Count
------------------------------
ITB001 5
MKB114 2
接着統計,每門學科每學期有多少同學選擇
SELECT Subject, Semester, Count(*)
FROM Subject_Selection
GROUP BY Subject, Semester;
result:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
總結:GROUP BY X意思是將所有具有相同X字段值的記錄放到一個分組裏。
而,GROUP BY X, Y意思是將所有具有相同X字段值和Y字段值的記錄放到一個分組裏。
3、sqoop迴流任務報錯,“Error during export: Export job failed”
用Sqoop將Hive中HDFS形式的數據迴流到MySQL數據庫,在確保sqoop命令行無誤情況下,能迴流部分數據但sqoop任務報錯,“Error during export: Export job failed”。
解決方法:Hive 表的數據問題。需仔細檢查要回流的Hive表中最好不要有NULL值,可通過nvl(字段名 , 0)或nvl(字段名 , '')將NULL值轉換。