生产中Hive静态和动态分区表,该怎样抉择呢?

发布时间:2020-06-30 21:51:29 作者:Stitch_x
来源:网络 阅读:458

一.需求

按照不同部门作为分区,导数据到目标表

二.使用静态分区表来完成

1.创建静态分区表:

create table emp_static_partition(
empno int, 
ename string, 
job string, 
mgr int, 
hiredate string, 
sal double, 
comm double)
PARTITIONED BY(deptno int)
row format delimited fields terminated by '\t';

2.插入数据:

hive>insert into table emp_static_partition partition(deptno=10)
     select empno , ename , job , mgr , hiredate , sal , comm from emp where deptno=10;

3.查询数据:

hive>select * from emp_static_partition;

生产中Hive静态和动态分区表,该怎样抉择呢?

三.使用动态分区表来完成

1.创建动态分区表:

create table emp_dynamic_partition(
empno int, 
ename string, 
job string, 
mgr int, 
hiredate string, 
sal double, 
comm double)
PARTITIONED BY(deptno int)row format delimited fields terminated by '\t';

【注意】动态分区表与静态分区表的创建,在语法上是没有任何区别的

2.插入数据:

hive>insert into table emp_dynamic_partition partition(deptno)     
select empno , ename , job , mgr , hiredate , sal , comm, deptno from emp;

【注意】分区的字段名称,写在最后,有几个就写几个 与静态分区相比,不需要where

需要设置属性的值:

hive>set hive.exec.dynamic.partition.mode=nonstrict;

假如不设置,报错如下:
生产中Hive静态和动态分区表,该怎样抉择呢?
3.查询数据:

hive>select * from emp_dynamic_partition;
生产中Hive静态和动态分区表,该怎样抉择呢?
分区列为deptno,实现了动态分区

四.总结

在生产上我们更倾向是选择动态分区
无需手工指定数据导入的具体分区,
而是由select的字段(字段写在最后,有几个写几个)自行决定导出到哪一个分区中, 并自动创建相应的分区,使用上更加方便快捷 ,在生产工作中用的非常多多。

推荐阅读:
  1. Hive分区表简介
  2. hive分区表如何创建

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hive 动态分区 数据仓库

上一篇:如何对js里的变量进行子文本替换

下一篇:java _io_commons读取、写出文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》