文章目录
- 一、实战概述
- 二、实战步骤
- (一)创建图书数据库
- (二)创建国别分区的图书表
- (三)在本地创建数据文件
- (四)按分区加载数据
- 1、加载中文书籍数据到`country=cn`分区
- 2、加载英文书籍数据到`country=en`分区
- (五)查看分区表book全部记录
- (六) 通过HDFS查看分区对应的目录及文件
- (七)手动创建分区并上传数据
- 1、在HDFS上手动创建`country=jp`分区目录
- 2、创建日文书籍数据文件`jp_book.txt`
- 3、上传文件到HDFS日本分区目录
- 4、更新元数据以识别新分区
- (八)再次查看book表全部记录
- (九)删除指定分区
- (十)更改分区名
- (十一)在MySQL中查看Hive元数据(分区信息)
- 1、登录MySQL Hive Metastore数据库
- 2、 查看book表分区元数据信息
- 三、实战总结
一、实战概述
-
在本Hive分区表管理实战中,我们通过一系列实际操作演示了如何有效地利用分区功能来组织和查询大规模数据。首先,创建了一个名为
book
的内部分区表,其结构包含id
与name
字段,并根据country
字段进行分区。接下来,准备并加载了不同国家(中国和英国)书籍的数据文件到对应的分区目录中。 -
为了展示分区灵活性,我们还模拟了手动创建新分区(日本),上传数据文件并通过
msck repair table
命令将新分区纳入表的元数据管理中。此外,实战还涉及分区的删除、重命名等操作,直观展示了Hive如何同步更新分区状态至HDFS存储及元数据层面。 -
最后,通过查看MySQL中Hive Metastore数据库的相关表信息,揭示了Hive如何记录分区的具体元数据内容,包括分区位置等关键信息。整个实战过程充分展现了Hive分区表在提升查询效率、实现数据分类存储以及简化数据管理方面的强大能力。
二、实战步骤
(一)创建图书数据库
- 执行命令:
create database bookdb;
- 执行命令:
use bookdb;
,切换到bookdb
数据库
(二)创建国别分区的图书表
- 执行语句:
create table book (id int, name string) partitioned by (country string) row format delimited fields terminated by ' ';
,创建book
表
(三)在本地创建数据文件
- 在master虚拟机上创建中文书籍数据文件
cn_book.txt
- 在master虚拟机上创建英文书籍数据文件
en_book.txt
(四)按分区加载数据
1、加载中文书籍数据到country=cn
分区
- 执行语句:
load data local inpath '/root/cn_book.txt' overwrite into table book partition(country='cn');
2、加载英文书籍数据到country=en
分区
- 执行语句:
load data local inpath '/root/en_book.txt' overwrite into table book partition(country='en');
(五)查看分区表book全部记录
- 执行语句:
select * from book;
,注意:第三列是分区字段
(六) 通过HDFS查看分区对应的目录及文件
- 使用HDFS Shell命令检查
/user/hive/warehouse/bookdb.db/book
(假设这是hive表的默认存储位置)下的country=cn
和country=en
分区目录及其内部的数据文件。 - 执行命令:
hdfs dfs -ls -r /user/hive/warehouse/bookdb.db/book
(七)手动创建分区并上传数据
1、在HDFS上手动创建country=jp
分区目录
- 执行命令:
hdfs dfs -mkdir /user/hive/warehouse/bookdb.db/book/country=jp
2、创建日文书籍数据文件jp_book.txt
- 在master虚拟机上创建
jp_book.txt
3、上传文件到HDFS日本分区目录
- 执行命令:
hdfs dfs -put jp_book.txt /user/hive/warehouse/bookdb.db/book/country=jp
4、更新元数据以识别新分区
- 执行语句:
msck repair table book;
(八)再次查看book表全部记录
- 执行语句:
select * from book;
,注意:第三列是分区字段
(九)删除指定分区
- 执行语句:
alter table book drop partition (country='jp');
,删除country=jp
分区
- 此时,查看分区表全部记录,就会发现没有日本书籍记录
(十)更改分区名
- 将原有
country=cn
分区重命名为country=zh
,执行语句:alter table book partition (country='cn') rename to partition (country='zh');
- 此时,查看分区表全部记录
(十一)在MySQL中查看Hive元数据(分区信息)
1、登录MySQL Hive Metastore数据库
- 执行命令:
mysql -uroot -p903213
,登录MySQL,然后执行use hive;
,打开hive元数据库
2、 查看book表分区元数据信息
-
执行语句:
SELECT * FROM COLUMNS_V2;
,book分区表的CD_ID值是27
-
执行语句:
select SD_ID, CD_ID, LOCATION from SDS where CD_ID = 27;
三、实战总结
- 本实战演练全面展示了如何在Hive中创建和管理分区表,通过实际操作演示了数据按国别分区存储、加载与查询的全过程。从创建
book
表开始,依次完成了数据文件准备、分区数据加载、分区查看及更新元数据等任务,并进一步演示了分区的增删改查操作,最后通过MySQL查看Hive Metastore中记录的分区元数据信息,充分体现了Hive分区表在提升查询效率与简化数据管理方面的优势。