hive的存储格式、hive的调优、flame的基础知识part1

1.数据存储的格式:

两大类:列式存储、行式存储
四小种:行式存储:TEXTFILE、SEQUENCEFILE
列式存储:ORC、PARQUENT
注意:一般原始数据都是以textfile这种形式存储的
经过分析之后通过insert overwrite select 将我们分析出来的结果插入到另一张临时表里面就可以使用parquet或者orc这些列式存储格式

存储与压缩相结合:存储格式和压缩方式没有关系
实际工作当中,一般存储格式与压缩方式都会一起使用
log_orc 2.8M 因为orc格式的数据默认带来一种压缩方式 zlib
注意:就算orc存储格式不带任何存储方式,也可以将数据变小 取决于我们列式存储的优势

log_orc 使用zlib压缩2.8M
不压缩 7.7M
使用snappy压缩3.8M
实际工作当中一般分析之后存储数据的一些临时表都会使用orc的存储格式,使用snappy的压缩方式

2.hive的调优

1.fetch的抓取 能不走mr就不走mr
hive.fetch.task.conversion 这个配置项有几个取值 none minimal,more
如果设置成none,所有的都要走mr (包括 select * 也要走)
默认值是more
将设置hive.fetch.task.conversion设置为more之后,
hive (default)> set hive.fetch.task.conversion=more;
下面这些命令就是不会执行mapreduce程序
hive (default)> select * from score;
hive (default)> select s_score from score;
hive (default)> select s_score from score limit 3;

1

2.本地模式 可以解决我们有大量的小文件,处理分配资源过多的情况
开启本地模式的自动选择
//设置local mr的最大输入数据量,当输入数据量小于这个值时采用local mr的方式,默认为134217728,即128M
set hive.exec.mode.local.auto=true; //开启本地mr
//设置local mr的最大输入文件个数,当输入文件个数小于这个值时采用local mr的方式,默认为4
set hive.exec.mode.local.auto.input.files.max=10;

3.表join
早期的hive版本
小表join大表 会将小表的数据一次性进入到内存当中去,与右边大表进行匹配
现在的版本已经不存在这一条优化了,hive会有一个优化器,经过自动选择,可以自动的找出哪个表是小表,将小表的数据一次性放到内存

select count(distinct s_id) from score;

select count(1) from (
select count(s_id) from score group by s_id
) temp;

先在map端对数据进行一次聚合,然后发送到reduce数据会变少,然后再count的时候就会比较快
select count(s_id) from score group by s_id; 在map端进行聚合,效率更高
2

如果大表join大表的时候,尽量减少输入的数据量
所有的调优,就一条原则&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值