【博学谷学习记录】超强总结,用心分享|Hive调优-本地模式


本地模式

当数据量很大时,Hadoop Job是通过集群来处理大数据集的,这样可以充分发挥分布式计算的优势。
但是有时候数据量很小的时候,原来的优化反而成了劣势,因为在数据量小的情况下,触发执行任务所消耗的时间比job执行的时间还要多得多,对于这种情况,Hive可以通过本地模式在单台机器处理所有任务,对于小数据集,执行时间可以明显缩短
用户可以通过设置hive.exec.mode.local.auto=true,让Hive在适当的时候自动启动这个优化

--开启本地mr
set hive.exec.mode.local.auto=true;  

--设置local mr的最大输入数据量,当输入数据量小于这个值时采用local  
--mr的方式,默认为134217728,即128M
set hive.exec.mode.local.auto.inputbytes.max=51234560;

--设置local mr的最大输入文件个数,当输入文件个数小于这个值时采用local 
--mr的方式,默认为4
set hive.exec.mode.local.auto.input.files.max=10;

用案例测试本地模式的效果

创建普通表
create table score2
(
    id    string,
    cid   string,
    score string
)
	row format delimited
	fields terminated by ' '

加载数据到普通表
load data local inpath '/export/testdatas/score.txt' into table score2

创建分桶表
create table score
(
    id    string,
    cid   string,
    score string
)
	clustered by (id) into 3 buckets
	row format delimited
	fields terminated by ' '

查询普通表数据插入分桶表

分桶表的数据无法通过hdfs dfs -put文件或者load data加载
只能通过insert into 或insert overwrite

insert overwrite table score
select * from score2 cluster by id;

记录关闭本地模式的插入数据用时

花费时间: 1分49秒

image.png

记录开启本地模式的插入数据用时

花费时间: 37s

image.png

记录关闭本地模式的查询数据用时

花费用时: 35秒

image.png

记录开启本地模式的查询数据用时

花费用时: 1秒

image.png

总结

在数据量小的时候,不论是插入数据还是查询数据时,开启本地模式后,任务的执行时间都大幅缩短
插入数据时缩短三分之二的执行时间
查询数据效果更为明显,从35s缩短到1s
在Hive调优时可以开启这个参数,缩短小数据量的任务执行时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值