Hive 之內 外表 與 分割槽表 桶表區別

2021-07-25 08:32:22 字數 785 閱讀 1570

內錶:刪表刪資料   (hdfs上的檔案資料)

外表:刪表不刪資料(hdfs上的檔案資料)

外表

包含external 的表叫外部表

分割槽表

加入分割槽避免hive select查詢中掃瞄整個表內容,會消耗很多時間做沒必要的工作。(例如每一天的日誌存放在乙個分割槽中,這樣根據特定的日期查詢)

乙個表可以擁有乙個或者多個分割槽,每個分割槽以資料夾的形式單獨存在表資料夾的目錄下。

桶表

對於每乙個表(table)或者分割槽, hive可以進一步組織成桶,也就是說桶是更為細粒度的資料範圍劃分。hive也是 針對某一列進行桶的組織。hive採用對列值雜湊,然後除以桶的個數求餘的方式決定該條記錄存放在哪個桶當中。

桶是以檔案的形式存放在表或者分割槽的目錄下。

把錶(或者分割槽)組織成桶(bucket)有兩個理由:

(1)獲得更高的查詢處理效率。桶為表加上了額外的結構,hive 在處理有些查詢時能利用這個結構。具體而言,連線兩個在(包含連線列的)相同列上劃分了桶的表,可以使用 map 端連線 (map-side join)高效的實現。比如join操作。對於join操作兩個表有乙個相同的列,如果對這兩個表都進行了桶操作。那麼將儲存相同列值的桶進行join操作就可以,可以大大較少join的資料量。

(2)使取樣(sampling)更高效。在處理大規模資料集時,在開發和修改查詢的階段,如果能在資料集的一小部分資料上試執行查詢,會帶來很多方便。

Hive知識之內外部表和分割槽表

2 分割槽表 1 內外部表create external table ifnot exists 表名.1.1 內部表 1.2 外部表 2 分割槽表create external table ifnot exists 表名.partitioned by 列名 資料型別 comment 本列注釋 2.1...

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...