order by:全域性排序,只有乙個reducer
1、使用 order by 子句排序
公升序:asc,可以不寫,預設是公升序
降序:desc,降序
2、order by 語句使用在select語句的結尾
3、案例實操
--(1) 查詢員工資訊按工資公升序排序
select
*from emp order
bysal;
--(2) 查詢員工資訊按工資降序排序
select
*from emp order
by sal desc;
sort by : 對於大規模的資料集來說order by 的效率特別低。很多情況下,不需要全域性排序,此時可以使用sort 不要。
sort by是為每個reducer 產生乙個排序檔案,對每個reducer內部進行排序,對全域性結果不是排序。
案例:
--1、設定reduce個數
set mapreduce.job.reducers =3;
--2、檢視設定reduce個數。
setmapreduce.job.reducers;
--3、根據部門編號降序檢視員工資訊。
select
*from emp sort by deptno desc;--
4、將查詢結果匯入檔案中
insert overwrite local directory '
/opt/module/datas/sortby-result
'select
*from emp sort by deptno desc;
distribute by :在某些情況下我們需要控制某個特定行到哪個reducer,通常為了後續的聚合運算,distribute by子句可以做這件事兒,distribute by類似於mr中的partition,進行分割槽,結合 sortby使用。
對於distribute by 進行測試的時候,一定要分配多reduce進行處理。否則無法看到效果。
案例:
--先按照部門編號分割槽,再按照員工編號降序排序。
set mapreduce.job.reducers =3;
insert overwrite local directory '
/opt/moudle/datas/distribute-result
'select
*from emp distribute by deptno sort by rmpno desc;
注意:1、distribute by的分割槽規則是根據欄位的hash碼與reduce的個數進行模運算 後,餘數相同的分到乙個區。
2、hive 要求 distribute by子句放在 sort by 子句的前面。
當分割槽字段(distribute by)和排序字段( sort by)相同時,可以考慮用cluster by。
cluster by:除了具有 distribute by 的功能外還具備 sort by 的功能。但是排序只能是公升序排序,不能指定排序規則為公升序或者降序。
案例:
--以下兩種寫法等到相同的結果
select
*from emp cluster by
deptno;
select
*from emp distribute by deptno sort by deptno;
注意:按照部門編號分割槽。不一定就是固定得單個數值,也可以是10號和20號部門分到乙個分割槽裡去。
Hive學習總結之五 HBase和Hive的整合
hive和hbase有各自不同的特徵 hive是高延遲 結構化和面向分析的,hbase是低延遲 非結構化和面向程式設計的。hive資料倉儲在hadoop上是高延遲的。hive整合hbase就是為了使用hbase的一些特性。如下是hive和hbase的整合架構 圖1 hive和hbase架構圖 hiv...
Hadoop學習之Hive簡介
1.hive的基本架構 2.hive的資料儲存 例如 tbl pv 表中包含 ds 和 city 兩個 partition,則對應於 ds 20090801,ctry us 的 hdfs 子目錄為 wh tbl pv ds 20090801 ctry us 對應於 ds 20090801,ctry ...
Hive學習之抽樣(tablesample)
當資料量特別大時,對全體資料進行處理存在困難時,抽樣就顯得尤其重要了。抽樣可以從被抽取的資料中估計和推斷出整體的特性,是科學實驗 質量檢驗 社會調查普遍採用的一種經濟有效的工作和研究方法。hive支援桶表抽樣和塊抽樣,下面分別學習。所謂桶表指的是在建立表時使用clustered by子句建立了桶的表...