技术干货 | Hive模式设计

过多使用分区可能导致非必须的Hadoop文件和文件夹,最终会超出NameNode对系统云数据信息的处理能力。

默认,每个task都是一个新的JVM实例,都需要开启和销毁的开销。对于小文件(小于一个块的大小),每个文件都会对应一个task。会导致JVM开启和销毁的时间中可能会比实际处理数据的时间消耗要长。

理想的分区方案部应该导致产生太多的分区和文件夹目录,并且每个目录下的文件应该足够大,应该是文件系统中块大小的若干倍。

不能够找到好的、大小相对合适的分区方式的话,可以考虑使用分桶表数据存储。

Hive没有主键或基于序列密钥生成的自增键的概念。

分桶是将数据集分解成更容易管理的若干部分的另一个技术。如:在创建表时使用CLUSTERED BY(COLUMN_NAME) INTO 96 BUCKETS;

需要设置一个属性来强制Hive为目标表的分桶初始化过程设置一个正确的reducer个数,然后再执行一个查询来填充分区:set hive.enforce.bucketing=true;

from raw_logs insert overwrite table weblog partition (dt='2016-08-23') select user_id,url,source_ip where dt='2016-08-23'; 如果没有使用hive.enforce.bucketing属性,那么就需要自己设置和分桶个数相匹配的reducer个数,如用set mapred.reduce.tasks=96,然后在INSERT语句中,需要在SELECT 语句后增加CLUSTER BY 语句。因为桶的数量是固定的,所以它没有数据波动,桶对于抽样再适合不过。分桶同时有利于执行高效的map-side JOIN。

为底层数据增加一个新字段,旧的原始数据文件可能不包含这个字段,这种方式,无法再已有字段的开始或中间增加新字段。

几乎在所有情况下,压缩都可以使磁盘上存储的数据量变小,这样可以通过降低I/O来提高查询执行速度,但是压缩和解压缩会消耗CPU资源。一般情况建议使用压缩,除非CPU对性能有影响。

原文发布于微信公众号 - 加米谷大数据(DtinoneBD)

原文发表时间:2018-01-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

impdp create index parallel-数据泵并行创建索引

题记:在数据泵导入时默认情况下创建索引是不使用并行的,所以这一步会消耗较长的时间,除了人工写脚本并行创建索引外,数据泵在导入时也可以并行创建索引,本文详细介绍了...

5004
来自专栏Danny的专栏

SQL Server 2008 附加数据库时出错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

2.5K3
来自专栏GreenLeaves

Oracle给Select结果集加锁,Skip Locked(跳过加锁行获得可以加锁的结果集)

1、通过select for update或select for update wait或select for update nowait给数据集加锁 具体实现...

2058
来自专栏YG小书屋

hive 插入parquet二级分区表数据倾斜优化

错误: Java Heap Space。或者GC overhead limit exceeded。 原因: Parquet和ORC是列式批处理文件格式。这...

3201
来自专栏前端vue

对数据进行一些基本操作(四)

完整代码 ↓ ↓ ↓ ↓ github地址:https://github.com/jgsrty/jianshu_node 码云地址:https://gite...

1654
来自专栏pangguoming

CentOS7安装MySQL8

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

1.1K4
来自专栏醉梦轩

Ubuntu 16.04 部署MySQL服务

MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。

1051
来自专栏醉梦轩

Ubuntu 16.04 部署MySQL服务

MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。

1832
来自专栏窗户

C语言/原子/编译,你真的明白了吗?

  说到原子,类似于以下的代码可能人人都可以看出猫腻。 /* http://www.cnblogs.com/Colin-Cai */ #include <std...

2229
来自专栏杨建荣的学习笔记

MySQL备份恢复第二篇(r5笔记第6天)

MySQL中的数据恢复功能相比Oracle来说还是要单薄一些,而Oracle中的数据恢复相对来说自动化的程度要高一些。不过Mysql的二进制日志提供的信息很丰富...

3595

扫码关注云+社区

领取腾讯云代金券