📜  Hive动态分区概述

📅  最后修改于: 2022-05-13 01:57:01.562000             🧑  作者: Mango

Hive动态分区概述

在本文中,我们将讨论Hive的概述,并将重点介绍动态分区,最后我们将总结Hive中动态分区的操作。让我们一一讨论。

概述 :
Hive是 Facebook 开发的存储系统,它基本上是一个对结构化数据执行操作的数据仓库系统。它主要用于执行分析和 MapReduce 作业等操作。它还提供读取、写入和管理大型数据集的功能。 Hive之所以受欢迎,主要是因为它可以替代传统的数据库操作方法。 Hive使用索引有助于在内部提高查询效率,它还可以对存储在 Hadoop 生态系统中的压缩数据进行操作。

分区类型:
有以下两种类型的分区。

  1. 静态分区
  2. 动态分区

动态分区:
动态分区是从非分区表加载数据的战略方法,其中向分区表的单个插入称为动态分区。在动态分区中,分区表的值默认存在,因此无需手动传递这些列的值。

动态分区的特点:
动态分区的一些特性如下。

  • 要处理存储在分布式存储中的大量数据,动态分区是最佳选择。
  • 可以对 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')