Hive中的分割槽 分桶以及資料抽樣

2021-10-11 18:47:16 字數 911 閱讀 9883

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當中也是支援這種思想的,就是我們可以把大的資料,按照每天,或者每小時進行切分成乙個個的小的檔案,這樣去操作小的檔案就會容易得多了。企業常見的分割槽規則 按天...