1 分割槽表
[partitioned by (col_name data_type [comment col_comment], ...)]
1.1 分割槽表
在建表時,指定了partitioned by ,這個表稱為分割槽表
partitioned by 以什麼分割槽
1.2 分割槽概念
mr: 在maptask輸出key-value時,為每個key-value計算乙個區號,同乙個分割槽的資料,會被同乙個reducetask處理
這個分割槽的資料,最終生成乙個結果檔案!
通過分割槽,將maptask輸出的key-value經過reduce後,分散到多個不同的結果檔案中!
hive: 將表中的資料,分散到表目錄下的多個子目錄(分割槽目錄)中
1.3 分割槽意義分割槽的目的是為了就資料,分散到多個子目錄中,在執行查詢時,可以只選擇查詢某些子目錄中的資料,加快查詢效率!
只有分割槽表才有子目錄(分割槽目錄)
分割槽目錄的名稱由兩部分確定: 分割槽列列名=分割槽列列值
將輸入匯入到指定的分割槽之後,資料會附加上分割槽列的資訊!
分割槽的最終目的是在查詢時,使用分割槽列進行過濾!
2 分割槽表操作
2.1 建立分割槽表
多級分割槽表,有多個分割槽字段
create external table if not exists learnwork.deptpart2(
deptno int,
dname string,
loc int
partitioned by(area string,province string)
row format delimited fields terminated by '\t';
create external table if not exists learnwork.deptpart3(
deptno int,
dname string,
loc int
partitioned by(area string)
row format delimited fields terminated by '\t'
location 'hdfs://hadoop101:9000/deptpart3';
2.2 分割槽的查詢
show partitions 表名
2.3 建立分割槽alter table 表名 add partition(分割槽欄位名=分割槽字段值) ;在hdfs上生成分割槽路徑
在mysql中metastore.partitions表中生成分割槽的元資料
直接使用load命令向分割槽載入資料,如果分割槽不存在,load時自動幫我們生成分割槽
如果資料已經按照規範的格式,上傳到了hdfs,可以使用修復分割槽命令自動生成分割槽的元資料
msck repair table 表名;
注意事項:如果表是個分割槽表,在匯入資料時,必須指定向哪個分割槽目錄匯入資料
如果表是多級分割槽表,在匯入資料時,資料必須位於最後一級分割槽的目錄
hive 分割槽表
partitioned by create table tb name name string partitioned by age int row format delimited fields terminated by t load data local inpath file path in...
hive分割槽表
partition對應於資料庫的 partition 列的密集索引 在 hive 中,表中的乙個 partition 對應於表下的乙個目錄,所有的 partition 的資料都儲存在對應的目錄中 例如 test表中包含 date 和 city 兩個 partition 則對應於date 201302...
hive 分割槽表
建立分割槽表的原因 單錶資料量隨著時間越來越大。為了避免全表掃瞄,引入分割槽。hive分割槽和mysql分割槽表的區別?hive分割槽使用表外字段,mysql使用表內字段。hive分割槽表細節?1.hive分割槽的字段是乙個偽欄位,它不會在表中真實存在,可以用來過濾查詢等 2.乙個表或者乙個分割槽可...