Hive SQL使用中遇到的問題與解決方案(持續更新

近期,因統計分析、數據處理的工作需求,經常使用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值轉換。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章