首頁(yè)技術(shù)文章正文

分區(qū)表如何添加分區(qū)和重命名分區(qū)?

更新時(shí)間:2023-07-21 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

隨著系統(tǒng)運(yùn)行時(shí)間的增加,表的數(shù)據(jù)量會(huì)越來(lái)越大,而Hive查詢數(shù)據(jù)通常是使用全表掃描,這會(huì)導(dǎo)致對(duì)大量不必要數(shù)據(jù)的掃描,從而降低查詢效率。為了解決這一問(wèn)題,Hive引進(jìn)了分區(qū)技術(shù),分區(qū)主要是將表的整體數(shù)據(jù)根據(jù)業(yè)務(wù)需求,劃分成多個(gè)子目錄進(jìn)行存儲(chǔ),每個(gè)子目錄對(duì)應(yīng)一個(gè)分區(qū)。通過(guò)掃描分區(qū)表中指定分區(qū)的數(shù)據(jù),避免Hive全表掃描,從而提升Hive查詢數(shù)據(jù)的效率。本節(jié)針對(duì)Hive的分區(qū)表進(jìn)行詳細(xì)講解。

添加分區(qū)是在分區(qū)表中根據(jù)分區(qū)字段添加實(shí)際分區(qū),語(yǔ)法格式如下。

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION
(partition_column ? partition_col_value,
partition_column ? partition_col_value, ...)
[LOCATION 'location']...;
上述語(yǔ)法的具體講解如下。

·ALTERTABLE:表示修改數(shù)據(jù)表結(jié)構(gòu)信息的語(yǔ)句。

·ADD[IFNOT EXISTS]PARTITION:用于添加分區(qū),其中IF NOT EXISTS為可選,用于判斷添加的分區(qū)是否存在。

·partition_column:用于指定分區(qū)字段。

·prtition_col_value:用于指定分區(qū)字段的值,即實(shí)際分區(qū)。

·LOCATION'location':可選.用于指定分區(qū)在HDFS上的存儲(chǔ)位置。

接下來(lái),在虛擬機(jī)Node_03中使用Hive客戶端工具Beeline,遠(yuǎn)程連接虛擬機(jī)Node_02的HiveServer2服務(wù)操作Hive,向數(shù)據(jù)庫(kù)hive_database的分區(qū)表partitioned_table添加分區(qū),具體命令如下。

ALTER TABLE hive_database.partitioned_table
ADD PARTITION (province= 'HeBei', city= 'HanDan')
location 
'/user/hive_local/varehouse/hive_database.db/HeBei'
PARTITION (province='ShanDong', city= 'JiNan')
location '/user/hive_local/varehouse/hive_database.db/ShanDong';

上述命令在數(shù)據(jù)庫(kù)hive_database的分區(qū)表partitioned_table中添加了兩個(gè)二級(jí)分區(qū),分別是province=HeBei/city=HanDan和province=ShanDong/city=JiNan。

上述命令執(zhí)行完成后,在Hive客戶端工具Beeline中執(zhí)行“SHOW PARTITIONS hive_database.partitioned_table:”命令.查看數(shù)據(jù)庫(kù)hive_database中分區(qū)表partitioned_table的分區(qū)信息,如圖所示。

1689928394072_分區(qū).png

從圖可以看出,分區(qū)表partitioned_table中成功添加了兩個(gè)二級(jí)分區(qū),分別是province=HeBei/city=HanDan和province=ShanDong/city=JiNan。

重命名分區(qū)是根據(jù)分區(qū)表的分區(qū)字段修改分區(qū)表的實(shí)際分區(qū),重命名分區(qū)的語(yǔ)法格式如下。

ALTER TABLE table_name PARTITION
(partition_column = 
partition_col_value,
partition_column= partition_col_value,)  _
RENAME TO PARTITION (partitfon_colutn = pArtition_col_value,
partition_column ? 
partition_col_value, ..);

接下來(lái),在虛擬機(jī)Node_03中使用Hive客戶端工具Beeline,遠(yuǎn)程連接虛擬機(jī)Node_02的HiveServer2服務(wù)操作Hive.重命名數(shù)據(jù)庫(kù)hive_database中分區(qū)表partitioned_table的分區(qū),具體命令如下。

ALTER TABLE hive_database.partitioned_table PARTITION
(province='HeBei', city='HanDan')
REMAME TO PARTITION (Province= 'HuBei', city='WuHan');

上述命令將分區(qū)表partitioned_table的二級(jí)分區(qū)province=HeBei/city=HanDan重命名為province=HuBei/city=WuHan。

上述命令執(zhí)行完成后,在Hive客戶端工具Beeline中執(zhí)行“SHOW PARTITIONS hive_database.partitioned_table;"命令,查看數(shù)據(jù)庫(kù)hive_database中分區(qū)表partitioned_table的分區(qū)信息,如圖所示。

從圖中可以看出,分區(qū)表partitioned_table的二級(jí)分區(qū) province=HeBei/city=HanDan 成功重命名為province=HuBei/city=WuHan。

1689928672277_分區(qū)信息.png

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!