生产中Hive静态和动态分区表,该怎样抉择呢?
Posted 若泽大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产中Hive静态和动态分区表,该怎样抉择呢?相关的知识,希望对你有一定的参考价值。
一.需求
按照不同部门作为分区,导数据到目标表
二.使用静态分区表来完成
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;
单击,放大图片查看
三.使用动态分区表来完成
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;
假如不设置,报错如下:
单击,放大图片查看
3.查询数据:
hive>select * from emp_dynamic_partition;
单击,放大图片查看
分区列为deptno,实现了动态分区
四.总结
在生产上我们更倾向是选择动态分区,
无需手工指定数据导入的具体分区,
而是由select的字段(字段写在最后,有几个写几个)自行决定导出到哪一个分区中, 并自动创建相应的分区,使用上更加方便快捷 ,在生产工作中用的非常多多。
本文来自,若泽大数据课程顾问-呼呼,原创博客:
https://blog.csdn.net/lemonzhaotao
打个小小的广告哟
1.若泽数据 官网:
www.ruozedata.com
微信不支持链接跳转,单击下方[阅读全文]
2.面试题/博客汇总:
https://github.com/ruozedata/BigData
微信不支持内链接跳转,浏览器拼写一下
(每周3篇大数据相关原创文章,联系客服领取,
若泽2017+2018年所有腾讯课堂公开课视频,尚未外泄,独此1家)
4.
5.若泽大数据--星星: ruoze_star ,加我邀请进群
单击下方【阅读全文】,进入官网!
以上是关于生产中Hive静态和动态分区表,该怎样抉择呢?的主要内容,如果未能解决你的问题,请参考以下文章