转载:Hive:什么情况下可以避免进行MapReduce
博客:http://www.changmeng.top/
对于Hive中的查询,如果用户进行过执行的话,那么可能会注意到大多数情况下查询都会触发一个MapReduce任务(job)。Hive中对某些情况的查询可以不必使用MapReduce。
什么是本地模式
Hive查询的本地模式是指在本地机器上执行Hive查询,而不需要连接到远程计算机或集群。这个模式以“本地模式”或“本地Hive模式”来称呼。
在本地模式下,用户可以使用HiveQL查询语言编写查询,并将其提交给Hive服务进行处理。这些查询只会在本地计算机上运行,不需要分布式计算资源和管理系统。使用本地模式可以很方便地学习Hive的基本语法和语义,同时能够加快一些小规模数据的测试和开发工作。
对于Hive中的查询,如果用户进行过执行的话,那么可能会注意到大多数情况下查询都会触发一个MapReduce任务(job)。Hive中对某些情况的查询可以不必使用MapReduce,也就是所谓的本地模式,例如:
这个例子假定数据表已经被创建并且有合适的数据存储在本地文件系统中。
SELECT * FROM employees;
在这种情况下,Hive可以简单地读取employees对应的存储目录下的文件,然后输出格式化后的内容到控制台。
对于WHERE 语句中过滤条件只是分区字段这种情况(无论是否使用LIMIT语句限制输出记录条数),也是无需MapReduce过程的。
SELECT * FROM employees
WHERE country='US' AND state='CA'
LIMIT 100;
配置环境变量
要使用本地模式,需要先安装Hive并配置相应环境变量。
如果属性 hive.exec.mode.local.auto
的值设置为true
的话,Hive还会尝试使用本地模式执行其他的操作。否则,Hive使用MapReduce来执行其他所有的查询。
set hive.exec.mode.local.auto=true;