Hive 动态分区
在动态分区中,分区列的值存在于表中,因此不需要手动传递分区列的值。
- 首先,在我们想要创建表的数据库中选择。
hive> use show;
- 使用以下命令启用动态分区:
hive> set hive.exec.dynamic.partition=true;
hive> set hive.exec.dynamic.partition.mode=nonstrict;
- 创建一个虚拟表来存储数据。
hive> create table stud_demo(id int, name string, age int, institute string, course string)
row format delimited
fields terminated by ',';
- 现在,将数据加载到表中。
hive> load data local inpath '/home/codegyani/hive/student_details' into table stud_demo;
- 使用以下命令创建分区表:-
hive> create table student_part (id int, name string, age int, institute string)
partitioned by (course string)
row format delimited
fields terminated by ',';
- 现在,将虚拟表的数据插入到分区表中。
hive> insert into student_part
partition(course)
select id, name, age, institute, course
from stud_demo;
- 以下屏幕截图显示,表student_part被分为两个类别。
- 让我们使用以下命令检索整个表的数据:-
hive> select * from student_part;
- 现在,尝试使用以下命令基于分区列检索数据:
hive> select * from student_part where course= "java ";
在这种情况下,我们不是在检查整个数据。因此,这种方法提高了查询响应时间。
- 通过使用以下命令,还可以检索另一个分区数据集的数据: –
hive> select * from student_part where course= "hadoop";