6.1 分割槽
分割槽,在hdfs中表現為table目錄下的子目錄
6.2 分桶
對應建表時bucket關鍵字,在hdfs中表現為同乙個表目錄下根據hash雜湊之後的多個檔案,會根據不同的檔案把資料放到不同的桶中。
如果分桶表匯入資料沒有生成對應數量的檔案,可通過如下方式解決:
開啟自動分桶,設定引數:set hive.enforce.bucketing= true
手動設定reduce數量,比如set mapreduce.job.reduces=4。
建議對於設計表有分桶需求時,開啟自動分桶。因為一旦reduce數量設定錯了,規劃的分桶數會無效。
注意:要用insert語句或者ctas語句將資料存入分桶表。load語句只是檔案的移動或複製。
6.3.1 按塊抽樣
1)百分比
select * from some_table tablesample(40 percent);
2)按大小
select * from some_table tablesample(20m);
3)按照行數取樣
select * from some_table tablesample(1000 rows);
6.3.2 按桶抽樣
其實就是對分桶表進行抽樣,效率高。
抽樣資料量=總資料量/抽樣分桶數。
示例:select count(1) from tablea tablesample(bucket 2 out of 8 on user_id);即tablesample(bucket 開始取樣的桶 out of 分成多少個桶)。
如果要進行抽樣,建議:
如果提前分桶了,表分桶數與抽樣分桶數一致,那麼只會掃瞄那個指定桶的資料
如果預先分桶和抽樣分桶數不一致:重新分桶
如果沒分桶:先分桶,在抽樣
Hive分割槽 分桶
create table t user partition id int name string partitioned by country string row format delimited fields terminated by load data local inpath root h...
Hive分割槽 分桶
2 靜態分割槽 二 hive分桶 1.分割槽列的值將表劃分為乙個個的資料夾 2.查詢時語法使用 分割槽 列和常規列類似 3.查詢時hive會只從指定分割槽查詢資料,提高查詢效率 建立單級分割槽表 create table ifnot exists employee partition name st...
Hive 分區分桶操作
在大資料中,最常用的一種思想就是分治,我們可以把大的檔案切割劃分成乙個個的小的檔案,這樣每次操作乙個小的檔案就會很容易了,同樣的道理,在hive當中也是支援這種思想的,就是我們可以把大的資料,按照每天,或者每小時進行切分成乙個個的小的檔案,這樣去操作小的檔案就會容易得多了。企業常見的分割槽規則 按天...