关于Hive SQL是否走MR任务的总结
Hive1.X和Hive2.X的版本,默认情况下,一般都会走MR程序。除了三种情况:
1.select * from table_name
#select * 的情况不会走MR
2.select column1,column2 ... from table_name
#select指定字段名的情况不会走MR(where和having除外)
3.select * from table_name limit N
#select * 限制输出条数不会走MR
当然,以上说多的是默认情况下,其实这些也是可以配置的,参数为:hive.fetch.task.conversion。详情请查看官网的一段描述:
从官网的描述中可以看出,该参数有3个值:
none:表示禁用,意思是任意Hive SQL都走引擎,而不是FETCH文件了。
minimal:就是上面说的三种情况。
more:在minimal的基础上,包括了where和having子句,还有tablesample 和 virtual column。
从上述描述可以看出,最好设置为more,以免更多的查询走MR任务。省时、方便。
more,以免更多的查询走MR任务。省时、方便。
Hive3.X之后,默认配置的是more。