Hive动态分区概述
在本文中,我们将讨论Hive的概述,并将重点介绍动态分区,最后我们将总结Hive中动态分区的操作。让我们一一讨论。
概述 :
Hive是 Facebook 开发的存储系统,它基本上是一个对结构化数据执行操作的数据仓库系统。它主要用于执行分析和 MapReduce 作业等操作。它还提供读取、写入和管理大型数据集的功能。 Hive之所以受欢迎,主要是因为它可以替代传统的数据库操作方法。 Hive使用索引有助于在内部提高查询效率,它还可以对存储在 Hadoop 生态系统中的压缩数据进行操作。
分区类型:
有以下两种类型的分区。
- 静态分区
- 动态分区
动态分区:
动态分区是从非分区表加载数据的战略方法,其中向分区表的单个插入称为动态分区。在动态分区中,分区表的值默认存在,因此无需手动传递这些列的值。
动态分区的特点:
动态分区的一些特性如下。
- 要处理存储在分布式存储中的大量数据,动态分区是最佳选择。
- 可以对 hive 外部表和托管表执行动态分区。
- 在动态分区中,不需要 where 子句。
- 如果您想在不知道列数的情况下对表执行分区,则可以使用动态分区。
动态分区的操作:
现在让我们执行一些动态分区的操作你可以选择ubuntu,它会很快,操作如下。
第1步 :
首先,我们需要创建一个数据库,要在其中执行创建表的操作。
hive>Create database dynamic_Demo;
hive>use dynamic_demo //here we have selected the above created database.
第2步 :
从可用列表中选择数据库后。现在我们将使用以下命令启用动态分区,如下所示。
hive> set hive.exec.dynamic.partition=true;
hive> set hive.exec.dynamic.partition.mode=nonstrict;
第 3 步:
创建任何具有合适表名的表来存储数据。
hive>CREATE TABLE food_prices (
series_reference string,
Period string,
data_value int,
status string,
units string,
subject string,
product string,
series_title string,
year string
)ROW FORMAT DELIMITED
fields terminated by ','
TBLPROPERTIES ("skip.header.line.count"="1");
第4步 :
现在在下一步让我们加载我们通过以下命令创建的数据。
hive>load data local inpath '/home/bigdata/Downloads/food_prices.csv'
into table food_prices;
第 5 步:
要创建分区表,我们必须遵循以下命令。
create table partitioned_food_prices
(
series_reference string,
Period string,
data_value int,
status string,
units string,
subject string,
product string,
series_title string
)partitioned by (year string);
第 6 步:
现在我们将使用以下命令将数据加载到分区表中。
hive> insert overwrite table partitioned_food_prices partition(year)
select * from default.food_prices;
第 7 步:
让我们执行一些查询操作。
hive>select * partitioned_food_prices limit 5
第 8 步:
最后一步是删除动态分区列。
hive>alter table partioned_food_prices drop partition (year = '2019')