【博学谷学习记录】超强总结,用心分享|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调优时可以开启这个参数,缩短小数据量的任务执行时间

你可能感兴趣的:(Hive,博学谷学习记录,hive,学习,大数据)