Hive动态分区与建表、插入数据操作

本文介绍了Hive的动态分区概念,包括启用动态分区的配置、动态分区的限制模式以及相关参数设置。通过示例展示了如何创建动态分区表、插入数据以及执行严格模式的插入操作。此外,还讲解了清除数据、查看表创建语句、删除表以及创建数据库等基本操作。Hive动态分区简化了数据管理,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、定义

动态分区指不需要为不同的分区添加不同的插入语句,分区不确定,需要从数据中获取

set hive.exec.dynamic.partition=true;//使用动态分区

(可通过这个语句查看:set hive.exec.dynamic.partition;) 

set hive.exec.dynamic.partition.mode=nonstrict;//无限制模式

如果模式是strict,则必须有一个静态分区,且放在最前面。 

SET hive.exec.max.dynamic.partitions.pernode=10000;每个节点生成动态分区最大个数 

set hive.exec.max.dynamic.partitions=100000;,生成动态分区最大个数,如果自动分区数大于这个参数,将会报错 

set hive.exec.max.created.files=150000; //一个任务最多可以创建的文件数目 

set dfs.datanode.max.xcievers=8192;//限定一次最多打开的文件数set dfs.datanode.max.xcievers=8192;//限定一次最多打开的文件数

 

2、创建静态分区表与动态分区表在hql语句上没有本质区别,主要区别在于hive.exec.dynamic.partition.mode设置

例:

CREATE TABLE order (

    nameSTRING,

    id STRING

)

PARTITIONED BY (monthstring,info string)

ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t';

 

3、动态分区表插入数据

Strict模式,需要有一个静态分区,且放在最前面

Insert overwritetable order(month=’2016-06’,info)

Select name,id,info(或者 substr(describtion,2,10) as info)from order;

 

info(或者 substr(describtion,2,10) as info):

动态分区的字段info可以是表中的Field,也可以是(alias)别名。


实际操作:

创建分区表:

creat tableTest_Info(

  name string,

  id string

  )

  Partitioned by(year string,month string,daystring,info string)

向分区表中插入数据:

set mapred.reduce.tasks = 10;

set mapred.job.priority=VERY_HIGH;

insert overwrite table test_infopartition(year="2016",month="06",day="13",info)

select deviceid as name,uuid as id,ip asinfo from ad_install limit 100;

向test_info插入数据时,ad_install的字段不允许错位,否则数据有误,但是名称可以不一致。

插入结果:

在/usr/deployer/warehouse/tmp.db/test_info下会出现year=2016文件夹,其下会有month=06文件夹,再其下会有day=13文件夹下的内容如下图:


清除表的数据:

truncate table test_info;

查看创建表的语句:

show create table test_info;

删除表:

drop table test_info;

创建数据库,指定数据库存储路径,默认为hive的metastore的路径:

create database if not exists lin 
location '/tmp/data';

查看数据库:

describe database lin;

hive创建外部表和内表的区别就是表文件夹的位置,外部表可以设置location,并且在删除表的时候内部表能够将文件夹删除,而外部表只能删除数据,无法删除文件夹


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值