赞
踩
随着系统运行时间的增加,表的数据量会越来越大,而Hive查询数据通常是使用全表扫描,这会导致对大量不必要数据的扫描,从而降低查询效率。为了解决这一问题,Hive引进了分区技术,分区主要是将表的整体数据根据业务需求,划分成多个子目录进行存储,每个子目录对应一个分区。通过扫描分区表中指定分区的数据,避免Hive全表扫描,从而提升Hive查询数据的效率。本节针对Hive的分区表进行详细讲解。
添加分区是在分区表中根据分区字段添加实际分区,语法格式如下。
- ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION
- (partition_column ▪ partition_col_value,
- partition_column ▪ partition_col_value, ...)
- [LOCATION 'location']...;
上述语法的具体讲解如下。
·ALTERTABLE:表示修改数据表结构信息的语句。
·ADD[IFNOT EXISTS]PARTITION:用于添加分区,其中IF NOT EXISTS为可选,用于判断添加的分区是否存在。
·partition_column:用于指定分区字段。
·prtition_col_value:用于指定分区字段的值,即实际分区。
·LOCATION'location':可选.用于指定分区在HDFS上的存储位置。
接下来,在虚拟机Node_03中使用Hive客户端工具Beeline,远程连接虚拟机Node_02的HiveServer2服务操作Hive,向数据库hive_database的分区表partitioned_table添加分区,具体命令如下。
- 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';
上述命令在数据库hive_database的分区表partitioned_table中添加了两个二级分区,分别是province=HeBei/city=HanDan和province=ShanDong/city=JiNan。
上述命令执行完成后,在Hive客户端工具Beeline中执行“SHOW PARTITIONS hive_database.partitioned_table:”命令.查看数据库hive_database中分区表partitioned_table的分区信息,如图所示。
从图可以看出,分区表partitioned_table中成功添加了两个二级分区,分别是province=HeBei/city=HanDan和province=ShanDong/city=JiNan。
重命名分区是根据分区表的分区字段修改分区表的实际分区,重命名分区的语法格式如下。
- 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, ..);
接下来,在虚拟机Node_03中使用Hive客户端工具Beeline,远程连接虚拟机Node_02的HiveServer2服务操作Hive.重命名数据库hive_database中分区表partitioned_table的分区,具体命令如下。
- ALTER TABLE hive_database.partitioned_table PARTITION
- (province='HeBei', city='HanDan')
- REMAME TO PARTITION (Province= 'HuBei', city='WuHan');
上述命令将分区表partitioned_table的二级分区province=HeBei/city=HanDan重命名为province=HuBei/city=WuHan。
上述命令执行完成后,在Hive客户端工具Beeline中执行“SHOW PARTITIONS hive_database.partitioned_table;"命令,查看数据库hive_database中分区表partitioned_table的分区信息,如图所示。
从图中可以看出,分区表partitioned_table的二级分区 province=HeBei/city=HanDan 成功重命名为province=HuBei/city=WuHan。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。