首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HiveQL查询性能优化

HiveQL查询性能优化
EN

Stack Overflow用户
提问于 2013-03-28 12:32:27
回答 3查看 1.3K关注 0票数 2

随着Hive查询中JOINS数量的增加,查询分多个阶段运行,占用了大量的执行时间。如何提高查询性能。是否有需要设置的参数?

EN

回答 3

Stack Overflow用户

发布于 2013-04-08 22:55:31

首先,大表应该放在联接顺序的最后一个: SELECT small.,large。FROM small JOIN large ON small.joinkey=large.joinkey;您可以使用提示告诉optimazier哪个表是最大的:

代码语言:javascript
复制
SELECT/*+ STREAMTABLE(large) */ small.*, large.* FROM large
JOIN small ON small.joinkey=large.joinkey;

其次,可以通过Map-side join在连接时将较小的表缓存到内存中:

代码语言:javascript
复制
set hive.auto.convert.join = true;
SELECT a.*, b.* FROM a
JOIN b ON a.joinkey=b.joinkey;

map-join表的大小由以下设置:

代码语言:javascript
复制
set hive.mapjoin.smalltable.filesize = 1000000; 

我希望这会有一点帮助。GL!

票数 4
EN

Stack Overflow用户

发布于 2013-08-08 18:34:00

当查询的SELECT或WHERE子句没有引用右表时,除了上述情况外,最好使用left semi join。

半连接比更通用的内连接更有效的原因如下。对于左表中的给定记录,一旦找到匹配记录,Hive就可以停止在右表中查找匹配记录。此时,可以投影从左侧表记录中选择的列

票数 0
EN

Stack Overflow用户

发布于 2017-09-14 19:43:04

代码语言:javascript
复制
set hive.exec.parallel = True

这是通用的,使用适当的set命令,我们可以根据您的集群配置优化查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15674326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档