Hive 分区

Hive 分区

在Hive中,分区意味着根据特定列的值(如日期、课程、城市或国家)来划分表。分区的优势在于,由于数据存储在切片中,查询响应时间变得更快。

我们知道Hadoop用于处理大量的数据,因此总是需要使用最佳方法来处理它。Hive中的分区就是最好的示例。

假设我们有一个包含1000万名学生的数据集。现在,我们需要获取某个课程的学生。如果使用传统方法,我们必须遍历整个数据集。这导致性能下降。在这种情况下,我们可以采用更好的方法,即在Hive中进行分区,并根据特定列将数据分为不同的数据集。

Hive中的分区可以通过以下两种方式执行 –

  • 静态分区
  • 动态分区

静态分区

在静态或手动分区中,需要在将数据加载到表中时手动传递分区列的值。因此,数据文件不包含分区列。

静态分区的示例

  • 首先,选择要在其中创建表的数据库。
hive> use test;
  • 通过使用以下命令,创建表并提供分区列: –
hive> create table student (id int, name string, age int,  institute string) 
partitioned by (course string)
row format delimited
fields terminated by ',';

Hive 分区

  • 让我们检索与表格相关的信息。
hive> describe student;

Hive 分区

  • 通过以下命令将数据加载到表中,并将分区列的值与数据一起传递:
hive> load data local inpath '/home/codegyani/hive/student_details1' into table student
partition(course= "java");  

Hive 分区

在这里,我们根据课程将一个学院的学生进行分区。

  • 将另一个文件的数据加载到相同表格中,并使用以下命令传递分区列的值:-
hive> load data local inpath '/home/codegyani/hive/student_details2' into table student
partition(course= "hadoop");

Hive 分区

在下面的截图中,我们可以看到表格student被分成两个分类。

Hive 分区

  • 使用以下命令来获取整个数据:-
hive> select * from student;

Hive 分区

  • 现在,尝试使用以下命令根据分区列检索数据:-
hive> select * from student where course="java";

Hive 分区

在这种情况下,我们没有检查整个数据。因此,这种方法可以提高查询响应时间。

  • 让我们还通过以下命令检索另一个分区数据集的数据:-
hive> select * from student where course= "hadoop";

Hive 分区

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程