Hive學習之排序

2022-08-02 02:18:14 字數 1876 閱讀 4002

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子句建立了桶的表...