hive 调优

来源:互联网 发布:软件代理加盟 编辑:程序博客网 时间:2024/06/15 08:47

hive 本地模式

根据数据量的大小,可以开启hive的本地模式:hive.exec.mode.local.auto 

该参数的默认值为false。


也可以把该属性配置到hive-site.xml中。

hive并行执行

hive并行执行,hive可以把一个查询转化成一个或者多个阶段,这些阶段并不是完全相互依赖的,也就是说有些阶段是可以并行执行的,这样就可以使整个job的执行时间变短。通过设置参数 mapred.exec.parallel 参数的值为true,就可以开启job的并行执行。


hive严格模式

如果要防止用户执行那些可能产生意想不到的查询的行为,可以设置参数 hive.mapred.mode 为strict。通过设置 set hive.mapred.mode=strict。可以禁止用户3中行为。

1:对于分区表,除非where子句中有分区字段的查询限制,负责不允许执行。

2:对于order by 语句必须增加limit限制,防止reduce界面额外执行很长的时间。

3:限制笛卡尔积的查询,join 语句中必须有on条件限制,负责不允许执行。

调整mapper,reducer个数

hive把查询划分成一个或者多个mapreduce任务达到并行的目的。确定合适的mapper,reducer个数,需要参考数据的数据量大小,以及执行的操作。

hive.exec.reducers.bytes.per.reducer这个参数也可以控制reduce 的个数。

mapred.reduce.tasks可是吧reduce个数设置为一个固定的值

hive.exec.reducers.max可以这是job最大允许的task的个数。

多个group by 组装到多个mapredec任务中 通过这是 hive.mulitgroupby.singlemr 参数为true。(如果这些group by 中使用相同的key,这个优化将会生效)

虚拟列

一种用户将要划分的输入的文件名,另外一种用于文件内的块的偏移量。当hive产生非预期,或者null的结果时,可以通过虚拟列诊断查询。通过查询这写列,可以定位到那个文件,那行数据。




0 0
原创粉丝点击