Hive知識點 索引 分割槽表 分桶表 抽樣查詢

2021-10-08 03:42:03 字數 1110 閱讀 2316

在指定列上建立索引,會產生一張索引表(hive的一張物理表),裡面的字段包括,索引列的值、該值對應的hdfs檔案路徑、該值在檔案中的偏移量;

將表中的資料,分散到表目錄下的多個子目錄(分割槽目錄)中

目的在執行查詢時只查詢某些子目錄中的資料加快查詢效率

匯入資料時候需要指定向哪個分割槽匯入資料

相當於在表中增加一列分割槽列

分割槽 使用 「列名=值」 的形式

已有資料 可通過自動修復分割槽

和mr中分割槽是乙個概念,把資料分散到多個檔案中

分桶本質上也是為了分散資料,在分桶後,可以結合hive 提供的抽樣查詢,只查詢指定桶的資料

在分桶時可以使用sorted by

向分桶表匯入資料會執行mr程式進行資料hash運算實現分桶

匯入資料前需要設定強制分桶 set hive.enforce.buckering=true 和強制排序 set hive.enforce.sorting=true

索引和分割槽最大的區別就是索引不分割資料表,分割槽分割資料庫。

索引其實就是拿額外的儲存空間換查詢時間,但分割槽已經將整個大資料庫按照分割槽列拆分成多個小資料庫了。

分割槽和分桶最大的區別就是分桶隨機分割資料庫,分割槽是非隨機分割資料庫。因為分桶是按照列的雜湊函式進行分割的,相對比較平均;而分割槽是按照列的值來進行分割的,容易造成資料傾斜。

其次兩者的另乙個區別就是分桶是對應不同的檔案(細粒度),分割槽是對應不同的資料夾(粗粒度)。

普通表(外部表、內部表)、分割槽表這三個都是對應hdfs上的目錄,桶表對應是目錄裡的檔案。

索引 通過索引表記錄指定列中資料的offset劃分

分割槽 使用新增列的方式 對資料進行劃分(到多個目錄中)

分桶 使用指定列的方式通過hash演算法分為指定數量 的桶(檔案)列中相同hash值相同劃分為一檔案中

select * from 分桶表 tablesample(bucket 1 out of 4 on 分桶表字段);

bucket x out of y on 要求 y必須時z的因子或倍數

bucket 1 out of 4 on

假設當前表一共分了8個桶

從第1個桶開始抽 每隔4桶抽一次,一共抽 8/4 個桶。

HIVE 表 分割槽表 分桶表

hive中表 1.managed table 託管表。刪除表時,資料也刪除了。2.external table 外部表。刪除表時,資料不刪。hive命令 建立表,external 外部表 hive create external table if not exists t2 id int,name ...

Hive分割槽表與分桶

在hive select查詢中,一般會掃瞄整個表內容,會消耗很多時間做沒必要的工作。分割槽表指的是在建立表時,指定partition的分割槽空間。分割槽語法 分割槽表操作增加分割槽 刪除分割槽 alter table employees drop ifexists partition country...

hive表型別 桶表 分割槽表

hive表型別 桶表 桶表是對資料進行雜湊取值,然後放到不同檔案中儲存。建立表create table t bucket id string clustered by id into 3 buckets 載入資料 set hive.enforce.bucketing true insert into...