标签:计数 相关 默认 tle 需要 logs tar title 允许
设置Job间并行的参数是Hive.exec.parallel,将其设为true即可。默认的并行度为8,也就是最多允许sql中8个Job并行。如果想要更高的并行度,可以通过Hive.exec.parallel. thread.number参数进行设置,但要避免设置过大而占用过多资源。
减少Job数
另外在实际开发过程中也发现,一些实现思路会导致生成多余的Job而显得不够高效。比如这个需求:查询某网站日志中访问过页面a和页面b的用户数量。低效的思路是面向明细的,先取出看过页面a的用户,再取出看过页面b的用户,然后取交集,代码如下:
这样一来,就要产生2个求子查询的Job,一个用于关联的Job,还有一个计数的Job,一共有4个Job。
但是我们直接用面向统计的方法去计算的话(也就是用group by替代join),则会更加符合M/R的模式,而且生成了一个完全不带子查询的sql,只需要用一个Job就能跑完:
第一种查询方法符合思考问题的直觉,是工程师和分析师在实际查数据中最先想到的写法,但是如果在目前Hive的query planner不是那么智能的情况下,想要更加快速的跑出结果,懂一点工具的内部机理也是必须的。(作者:孙逸 / 审校:刘亚琼)
作者介绍:孙逸,zamplus,数据仓库工程师。从事数据仓库平台建设与数据产品开发,热衷于研究大数据相关的计算技术,并应用于实践之中,让数据产生真正价值。
本文为CSDN原创文章,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)
标签:计数 相关 默认 tle 需要 logs tar title 允许
原文地址:http://www.cnblogs.com/Dhouse/p/7134396.html