hive分区用2个字段有何限制_关于Hive使用动态分区插入数据详解
1.创建一个单一字段分区表
hive> create table dpartition(id int ,name string )
partitioned by(ct string );
2.往表里装载数据,并且动态建立分区,以city建立动态分区
hive> set hive.exec.dynamic.partition=true; #开启动态分区,默认是false
set hive.exec.dynamic.partition.mode=nonstrict; #开启允许所有分区都是动态的,否则必须要有静态分区才能使用。
insert overwrite table dpartition
partition(ct)
select id ,name,city from mytest_tmp2_p;
要点:因为dpartition表中只有两个字段,所以当我们查询了三个字段时(多了city字段),所以系统默认以最后一个字段city为分区名,因为分区表的分区字段默认也是该表中的字段,且依次排在表中字段的最后面。所以分区需要分区的字段只能放在后面,不能把顺序弄错。如果我们查询了四个字段的话,则会报错,因为该表加上分区字段也才三个。要注意系统是根据查询字段的位置推断分区名的,而不是字段名称。
--查看可知,hive已经完成了以city字段为分区字段,实现了动态分区。
hive > show partitions dpartition;
partition
ct=beijing
ct=beijing1
注意:使用,insert...select 往表中导入数据时,查询的字段个数必须和目标的字段个数相同,不能多,也不能少,否则会报错。但是如果字段的类型不一致的话,则会使用null值填充,不会报错。而使用load data形式往hive表中装载数据时,则不会检查。如果字段多了则会丢弃,少了则会null值填充。同样如果字段类型不一致,也是使用null值填充。
3.多个分区字段时,实现半自动分区(部分字段静态分区,注意静态分区字段要在动态前面)
1.创建一个只有一个字段,两个分区字段的分区表
hive (fdm_sor)> create table ds_parttion(id int )
> partitioned by (state string ,ct string );
2.往该分区表半动态分区插入数据
hive>
set hive.exec.dynamici.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table ds_parttion
partition(state='china',ct) #state分区为静态,ct为动态分区,以查询的city字段为分区名
select id ,city from mytest_tmp2_p;
3.查询结果显示:
hive (fdm_sor)> select * from ds_parttion where state='china'
> ;
ds_parttion.id ds_parttion.state ds_parttion.ct
4 china beijing
3 china beijing
2 china beijing
1 china beijing
4 china beijing1
3 china beijing1
2 china beijing1
1 china beijing1
hive (fdm_sor)> select * from ds_parttion where state='china' and ct='beijing';
ds_parttion.id ds_parttion.state ds_parttion.ct
4 china beijing
3 china beijing
2 china beijing
1 china beijing
hive (fdm_sor)> select * from ds_parttion where state='china' and ct='beijing1';
ds_parttion.id ds_parttion.state ds_parttion.ct
4 china beijing1
3 china beijing1
2 china beijing1
1 china beijing1
Time taken: 0.072 seconds, Fetched: 4 row(s)
4.多个分区字段时,全部实现动态分区插入数据
set hive.exec.dynamici.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table ds_parttion
partition(state,ct)
select id ,country,city from mytest_tmp2_p;
注意:字段的个数和顺序不能弄错。
5.动态分区表的属性
使用动态分区表必须配置的参数 :
set hive.exec.dynamic.partition =true(默认false),表示开启动态分区功能
set hive.exec.dynamic.partition.mode = nonstrict(默认strict),表示允许所有分区都是动态的,否则必须有静态分区字段
动态分区相关的调优参数:
set hive.exec.max.dynamic.partitions.pernode=100 (默认100,一般可以设置大一点,比如1000)
表示每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错。
set hive.exec.max.dynamic.partitions =1000(默认值)
表示一个动态分区语句可以创建的最大动态分区个数,超出报错
set hive.exec.max.created.files =10000(默认) 全局可以创建的最大文件个数,超出报错。
hive分区用2个字段有何限制_关于Hive使用动态分区插入数据详解相关推荐
- hive分区用2个字段有何限制_[特性]Hive动态分区功能使用
[特性]Hive动态分区功能使用 2016-01-31 21:40 说明 Hive有两种分区,一种是静态分区,也就是普通的分区.另一种是动态分区.动态分区在数据导入时,会根据具体的字段值自行决定导入, ...
- hive分区用2个字段有何限制_[Hive]新增字段(column)后,旧分区无法更新数据问题...
问题描述: 实际应用中,常常存在修改数据表结构的需求,比如:增加一个新字段. 如果使用如下语句新增列,可以成功添加列col1.但如果数据表tb已经有旧的分区(例如:dt=20190101),则该旧分区 ...
- 使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据
应用场景: 我们需要设计一个数据库来保存多个文档中每个文档的关键字.假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字. 假设每个文档的关键字都超过了300,每一个文件的0-29 ...
- python动态生成数据库表_使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据...
应用场景: 我们须要设计一个数据库来保存多个文档中每一个文档的keyword. 假如我们每一个文档字符都超过了1000,取当中出现频率最大的为我们的keyword. 如果每个文档的keyword都超过 ...
- python在sql添加数据库_使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据...
应用场景: 我们需要设计一个数据库来保存多个文档中每个文档的关键字.假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字. 假设每个文档的关键字都超过了300,每一个文件的0-29 ...
- sql 插入text字段包含特殊字符_Kettle(PDI)转换中输出之插入/更新详解
概述 Insert / update(插入 / 更新)此步骤首先使用一个或多个查询关键字查找表中的一行.如果找不到该行,则插入该行.如果可以找到它,并且要更新的字段相同,则不执行任何操作.如果它们不完 ...
- hive中如何把13位转化为时间_【hive常用函数一】日期函数
使用hive进行数据处理的过程种,遇到不少问题,总结之前的一些开发经验,把之前的一些处理技巧mark一下: 使用通用的哑表dual作为测试表用. 1.时间戳转换 日期格式转换时间戳只能精确到秒(即长度 ...
- mysql 删除id为null的数据_mysql删除字段为空的数据详解
在mysql中空与空值是两码事的,也就是大家说null或""这种了,下面我总结了一些关于在mysql null与""值的删除与理解方法与大家分享. 空值与NUL ...
- hive之动态分区插入数据及其参数配置
hive使用动态分区插入数据详解 往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低.因为hive是批处理系统,所以hiv ...
最新文章
- PCL点云配准(1)
- 深度学习发现古人类遗址,AI 考古比胡八一更高效
- 查看IIS上面的每个网站分别用了多少内存
- 5G时代下的网络营销对移动端网站建设形成怎样的冲击?
- opencv matlab测距,基于MATLAB和OpenCV的双目视觉测距系统的实现
- 程序设计中的驼峰原则
- 关于单链表的头插法和尾插法
- 机器学习12推荐系统
- sharepoint站点移植方案
- LeetCode 380. 常数时间插入、删除和获取随机元素(哈希+vector)
- SharePoint Welcome.ascx 控件自定义样式的另类解决方式
- iOS-按钮单选与多选逻辑处理
- 实战OO设计——类的关系:依赖、关联、聚合和组合
- 华为顶尖应届生最高年薪超 200 万;抖音服务器宕机;GitLab 12.1 发布 | 极客头条...
- 判断DataTable为空,获取值,查询数据,datarow转datatable
- 计算机网络知识汇总(超详细整理)
- OpenCL(matmpy)
- nginx反向代理进行统一鉴权
- 编译祁大神的iguana,大神就是大神.
- java代理模式教你中间商赚差价
热门文章
- LVS的DR工作模型解析
- tf.trainable_variables() and tf.all_variables()
- Django框架详细介绍---cookie、session、自定义分页
- jquery-easyui环境的搭建及测试
- DVWA演练平台之SQL注入(全新认识)
- 关于vue,angularjs1,react之间的对比
- 设计模式学习--------3.简单工厂模式学习
- Excel制作考勤管理
- JavaScript 3D图表
- 光脚丫学LINQ(002):筛选数据