可以在配置单元中为简单查询启用fetch任务,而不是使用配置单元的map或mapreduce hive.fetch.task.conversion
参数。
请解释为什么fetch任务比map运行得快,特别是在做一些简单的工作时(例如 select * from table limit 10;
)? 在这种情况下,只Map的任务在做什么?在我的例子中,性能差异快了20多倍。两个任务都应该读取表数据,不是吗?
可以在配置单元中为简单查询启用fetch任务,而不是使用配置单元的map或mapreduce hive.fetch.task.conversion
参数。
请解释为什么fetch任务比map运行得快,特别是在做一些简单的工作时(例如 select * from table limit 10;
)? 在这种情况下,只Map的任务在做什么?在我的例子中,性能差异快了20多倍。两个任务都应该读取表数据,不是吗?
1条答案
按热度按时间o8x7eapl1#
fetchtask直接获取数据,而mapreduce将调用mapreduce作业
还有另一个参数
hive.fetch.task.conversion.threshold
0.10-0.13中的默认值是-1,>0.14是1g(1073741824),这表示如果表大小大于1g,则使用mapreduce而不是fetch task更多细节