hive动态分区与静态分区
来源:互联网 发布:阿里云潘爱民 编辑:程序博客网 时间:2024/06/03 02:26
HIVE分区,实际上是通过一个路径来标识的,而不是在物理数据中。比如每天的数据,可能分区是pt=20121023这样,那么路径中它就会变成:/hdfs/path/pt=20121023/data_files。通过路径来标识的好处是,如果我们需要取特定分区的数据,只需要把这个路径下的数据取出来就可以了,不用扫描全部的数据。
HIVE默认是静态分区。但是有时候可能需要动态创建不同的分区,比如商品信息,我想根据它是否在线分成两个分区,这样后续如果要取在线商品,就只需要从在线的分区获取即可。动态分区可以通过下面的设置来打开:
然后代码里就可以这么写:
注意输入字段的最后面必须是动态分区字段。
看一下与静态分区写法的区别:
动态分区与静态分区还有一个细微的差别是,静态分区一 定会创建分区,不管SELECT语句的结果有没有数据。而动态分区,只有在SELECT结果的记录数>0的时候,才会创建分区。因此在不同的业务场景下,可能会选择不同的方案。
另外使用动态分区时需要注意的比较重要的一点是,动态分区会为每一个分区分配reduce数。比如说你在脚本上面写了:set mapred.reduce.tasks=100;
并且有两个分区:pt, if_online。如果结果集中pt=20121023,if_online=0/1,那么它就会为pt=20121023/if_online=0,pt=20121023/if_online=1各分配100个reduce。也就是说,namenode会同时处理200个文件的写操作。这在分区值很多的情况下,会成为一个灾难,容易直接把namenode给搞挂掉,是非常危险的。因此使用动态分区时,一定要清楚地知道产生的动态分区值,并且合理地设置reduce数量。
HIVE默认是静态分区。但是有时候可能需要动态创建不同的分区,比如商品信息,我想根据它是否在线分成两个分区,这样后续如果要取在线商品,就只需要从在线的分区获取即可。动态分区可以通过下面的设置来打开:
- set hive.exec.dynamic.partition=true;
- set hive.exec.dynamic.partition.mode=nonstrict;
然后代码里就可以这么写:
- insert overwrite table tbl_name partition(pt, if_online)
- select field1, field2, ..., pt, if_online
- from tbl
- where xxx;
注意输入字段的最后面必须是动态分区字段。
看一下与静态分区写法的区别:
- insert overwrite table tbl_name partition(pt=20121023, if_online=1)
- select field1, field2, ..., fieldn
- from tbl
- where xxx;
动态分区与静态分区还有一个细微的差别是,静态分区一 定会创建分区,不管SELECT语句的结果有没有数据。而动态分区,只有在SELECT结果的记录数>0的时候,才会创建分区。因此在不同的业务场景下,可能会选择不同的方案。
另外使用动态分区时需要注意的比较重要的一点是,动态分区会为每一个分区分配reduce数。比如说你在脚本上面写了:set mapred.reduce.tasks=100;
并且有两个分区:pt, if_online。如果结果集中pt=20121023,if_online=0/1,那么它就会为pt=20121023/if_online=0,pt=20121023/if_online=1各分配100个reduce。也就是说,namenode会同时处理200个文件的写操作。这在分区值很多的情况下,会成为一个灾难,容易直接把namenode给搞挂掉,是非常危险的。因此使用动态分区时,一定要清楚地知道产生的动态分区值,并且合理地设置reduce数量。
- [Hive]Hive静态分区与动态分区
- hive中的静态分区与动态分区
- hive动态分区与静态分区
- HIVE 动态分区与静态分区
- hive动态分区与静态分区
- hive动态分区与静态分区
- HIVE 动态分区与静态分区
- hive中的静态分区与动态分区
- hive中的静态分区与动态分区
- hive中的静态分区与动态分区
- HIVE 动态分区与静态分区
- hive中的静态分区与动态分区
- HIVE 动态分区与静态分区
- hive动态分区与静态分区
- hive中的静态分区与动态分区
- HIVE 动态分区与静态分区
- HIVE 动态分区与静态分区
- Hive 动态分区 & 静态分区
- Haxe 3.0 RC版已经发布!
- Probabilistic Graphical Models 3 Template Models
- 计算器
- python 的二进制、八进制、十六进制数表示
- cocos2d-x 开关按钮 三态按钮 的实现 CCMenuItemToggle
- hive动态分区与静态分区
- ado连不上sql server数据库
- servlet
- 如何实现wordpress与人人网文章同步
- 音频处理领域的瑞士军刀──SoX
- 解决 “ie6 position:fixed定位”以及 “ 悬浮的元素会出现振动”
- MyEclipse8.5安装SVN插件
- Uva 297 - Quadtrees//树,递归
- C primer plus第9章(函数)习题