Hive高級查詢(group by )

  1. group by

按照某些字段的值進行分組,有相同值放到一起。
樣例

select col1 [,col2] ,count(1),sel_expr(聚合操作)from table
where condition         -->Map端執行
group by col1 [,col2]   -->Reduce端執行
[having]                -->Reduce端執行

注意
select後面非聚合列,必須出現在group by中
select後面除了普通列就是一些聚合操作
group by後面也可以跟表達式,比如substr(col)
特性
使用了reduce操作,受限於reduce數量,設置reduce參數mapred.reduce.tasks
輸出文件個數與reduce數相同,文件大小與reduce處理的數據量有關。
問題
網絡負載過重
數據傾斜,優化參數hive.groupby.skewindata爲true,會啓動一個優化程序,避免數據傾斜。

set mapred.reduce.tasks=5;
select * from TabOrder order by ch asc,num desc;

set mapred.reduce.tasks=3;
select ch ,count(1) as num from TabOrder group by ch;

set hive.groupby.skewindata = true;
select ch ,count(1) as num from TabOrder group by ch having count(1)>2;

select col from tablename group by col; <==> select distinct col from tablename;

附上原鏈接:https://blog.csdn.net/scgaliguodong123_/article/details/46944519#t2

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