概念
Fetch抓取,是指hive中某些查询hql不用走mapreduce计算,此时查询速度相对较快,类似于presto等即时查询引擎。这种查询一般是相对简单的单表查询,例如select * from test_table limit 10;
Fetch抓取的模式
可以通过 set hive.fetch.task.conversion查看,有以下3种模式:
- none:所有涉及hdfs的读取查询都走mapreduce任务;
- mininal:在进行简单的select *,简单的过滤或涉及分区字段的过滤时走mr;
- more:在mininal模式的基础上,增加了针对查询语句字段进行一些别名的计算操作。
以下HQL,mininal模式与more模式下都不会走mr任务:
SELECT
sale_ord_id,
store_id
FROM
test_table
where
dt = '2021-01-01'
limit 10;
以下HQL,mininal模式会走mr任务,more模式不会:
SELECT
sale_ord_id,
store_id,
if(store_id > 20,1,0) as store_id_new
FROM
test_table
where
dt = '2021-01-01'
limit 10;