hive分桶表排序
參考
我是照著這個作者的文章學習, 並且自己又總結了一下, 畢竟本人能力有限,不可能完全照著官方文件去自己研究 = =所以很多東西都是把別人的知識偷過來,自己再練習一下總結一下,佔為己有,就變成自己的東西了…
原作者:
新增連結描述
準備資料
/root/soft/buckt_data.txt
1,name1
4,name4
3,name3
6,name6
5,name5
7,name7
9,name9
8,name8
2,name2
建立普通的表
create table test
(
id int comment 'ID',
name string comment '名字'
)
comment '測試分桶中間表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
用來導資料用, 因為要想往分割槽表裡面匯入資料必須要經過MapReduce程式
檢視
select *
from test;
現在是空的
往空的test臨時表裡面導資料
load data local inpath '/root/soft/buckt_data.txt' into table test;
再看一下test臨時表
select *
from test;
有了,但是資料是亂的.
建立排序的分桶表
每個分割槽筒裡面根據id升序
sql
create table test_bucket_sorted
(
id int comment 'ID',
name string comment '名字'
)
comment '測試分桶'
clustered by (id) sorted by (id) into 4 buckets
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
檢視是否開啟了分桶和排序
sql
set hive.enforce.bucketing ; -- 檢視分桶配置
set hive.enforce.sorting ; -- 檢視排序配置
預設是false,需要配置成true
下面SQL依次執行一遍
sql:
set hive.enforce.bucketing=true; --開啟強制分桶,預設是不會幫你分桶的
set hive.enforce.sorting=true; -- 開啟強制排序,預設是不會幫你排序的.
從臨時表裡面匯入資料
上面已經執行了
sql:
select *
from test;
看到test這個臨時表資料是亂序的
開始匯入資料,
sql:
insert into test_bucket_sorted
select *
from test;
檢視匯入的結果
sql:
select *
from test_bucket_sorted;
看到這裡彆著急,最初我也是以為分桶表排序後查詢的順序也是一致的,其實結論不是這樣的, 因為你分桶表是給資料分到多個地方,多個地方里面每一個桶裡面才是根據某個欄位排序的,並不是查詢出來的就是語句就是排序的, 這點我在初學的時候我犯過這個錯誤…
驗證是否根據id進行排序了
登入hdfs
可以看到已經分了四個桶
依次開啟這四個檔案
shell:
[root@zjj101 ~]# hadoop fs -cat /user/hive/warehouse/test_bucket_sorted/000000_0
4,name4
8,name8
[root@zjj101 ~]# hadoop fs -cat /user/hive/warehouse/test_bucket_sorted/000001_0
1,name1
5,name5
9,name9
[root@zjj101 ~]# hadoop fs -cat /user/hive/warehouse/test_bucket_sorted/000002_0
2,name2
6,name6
[root@zjj101 ~]# hadoop fs -cat /user/hive/warehouse/test_bucket_sorted/000003_0
3,name3
7,name7
[root@zjj101 ~]#
可以看到這四個檔案裡面每個都是根據第一個欄位進行排序的, 也就是根據id排序的. 這才是分桶表排序的地方, 並不是說我執行了select * from test_bucket_sorted; 看到的結果沒排序我就認為排序失敗了…這是我初學時候犯過的錯誤.
下面再仔細對比一下.
下面執行完了select * from test_bucket_sorted; 給四個桶的資料都打出來了,順序和上面 481592637 順序是一樣的.
相關文章
- hive 分割槽表和分桶表區別Hive
- Hive——分桶的理解Hive
- hive分割槽分桶Hive
- Hive分桶之BUCKET詳解Hive
- hive分割槽和分桶你熟悉嗎?Hive
- hive學習筆記之五:分桶Hive筆記
- 三分鐘搞懂桶排序排序
- 桶排序排序
- 桶排序2排序
- [Hive]Hive排序優化Hive排序優化
- hive從入門到放棄(四)——分割槽與分桶Hive
- 排序演算法__桶排序排序演算法
- 桶排序和基數排序排序
- Hive 表的兩種分類Hive
- Hive分桶秘籍:解鎖大資料效能提升的神秘力量Hive大資料
- 桶排序 選擇,插入排序排序
- 排序演算法之——桶排序排序演算法
- 計數排序vs基數排序vs桶排序排序
- 非交換排序-計數排序和桶排序排序
- 常用排序演算法之桶排序排序演算法
- 基於桶的排序之計數排序排序
- rust-algorithms:3-桶排序RustGo排序
- 資料結構(python) —— 【18排序: 桶排序】資料結構Python排序
- Hive的分割槽和排序Hive排序
- 基於桶的排序之基數排序以及排序方法總結排序
- hive建表Hive
- 好程式設計師大資料學習路線分享hive分割槽和分桶程式設計師大資料Hive
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- Elasticsearch聚合的巢狀桶如何排序Elasticsearch巢狀排序
- (戀上資料結構筆記):計數排序、基數排序 、桶排序資料結構筆記排序
- 第三章:查詢與排序(下)----------- 3.20桶排序排序
- 【資料結構與演算法】非比較排序(計數排序、桶排序、基數排序)資料結構演算法排序
- [hive]hive資料模型中四種表Hive模型
- javascript: 帶分組資料的Table表頭排序JavaScript排序
- Hive表的基本操作Hive
- 報表連 hive,資料量比較大,怎麼分頁查詢?Hive
- 輕鬆搞定分組報表中的各種排序排序
- 順序表實現二分排序排序