1,开启FetchTask
一个简单的查询语句,是指一个没有函数、排序等功能的语句,当开启一个Fetch Task功能,就执行一个简单的查询语句不会生成MapRreduce作业,而是直接使用FetchTask,从hdfs文件系统中进行查询输出数据,从而提高效率。
设置的方式:
Hive.fetch.task.conversion 默认为minimal
修改配置文件hive-site.xml
hive.fetch.task.conversion
more
Some select queries can be converted to single FETCH task
minimizing latency.Currently the query should be single
sourced not having any subquery and should not have
any aggregations or distincts (which incurrs RS),
lateral views and joins.
1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only
2. more : SELECT, FILTER, LIMIT only (+TABLESAMPLE, virtual columns)
或者当前session修改
hive> set hive.fetch.task.conversion=more;
执行SELECT id, money FROM m limit 10; 不走mr
2,合并中间表
一个日志文件中,

本文介绍了优化Hive查询效率的多种方法,包括开启Fetch Task以避免MapReduce作业,合并中间表减少重复JOIN,利用分区表和列式存储减少扫描,启用JVM重用和推测执行,合理设置reduce个数,开启并行执行,以及优化SQL查询语句等。通过这些技巧,可以显著提升Java客户端查询Hive的速度。
最低0.47元/天 解锁文章
719

被折叠的 条评论
为什么被折叠?



