只是想知道如何做限制工作,为下面的简单查询HIVE:'SELECT * from'上的'LIMIT'如何在内部工作?
select * from T limit 100
试想一下表T有13万条记录
请问上面的查询:
1.第一负荷共13多万元建成的内存&在结果集中只显示100条记录?只有100 &
2.负载给出结果集的100条记录
正在寻找它很长一段时间,现在,大部分的网页只谈使用“限制”,但不涉及如何配置单元用它的下引擎盖。
赞赏有用的回复。
只是想知道如何做限制工作,为下面的简单查询HIVE:'SELECT * from'上的'LIMIT'如何在内部工作?
select * from T limit 100
试想一下表T有13万条记录
请问上面的查询:
1.第一负荷共13多万元建成的内存&在结果集中只显示100条记录?只有100 &
2.负载给出结果集的100条记录
正在寻找它很长一段时间,现在,大部分的网页只谈使用“限制”,但不涉及如何配置单元用它的下引擎盖。
赞赏有用的回复。
在引擎盖下,配置单元中的“选择”发出FETCH任务,而不是稀释mapreduce任务。想想它就像是一个 hadoop fs -get这里要指出的是FETCH任务只适用于 SELECT *,如果你选择列取指可能不起作用。
来源:https://vcfvct.wordpress.com/2016/02/18/make-hive-query-faster-with-fetch-task/
如果没有施加优化器,蜂房结了扫描整个表。但是蜂房优化 这与释放的HIVE-2925部分hive.fetch.task.conversion,为了缓解 用简单的条件,简单的查询,而不是在所有 运行MR/TEZ。
支持的值是none,minimal和更多。
无:禁用hive.fetch.task.conversion(在蜂房0.14.0加入值HIVE-8389)
最小:SELECT *,上分区列FILTER(WHERE和HAVING子句) ,仅限制
更:SELECT,FILTER,仅限制(包括TABLESAMPLE,虚拟列)
你的问题更利当最小或更多设置时,会发生什么情况。 它只是通过扫描添加的文件和读取行,直到达到 leastRows()更多是指gitCode,Config和here
,所以你的意思是说它只加载100内存? –
是的,检查在这里https://github.com/apache/hive/blob/release-1.2.1/ql/src/java/org/apache/hadoop/hive/ql/exec/FetchTask.java#L146 – rbyndoor
**(1)**运行一个思想实验和验证你的建议(记住,我们是处理分布式系统)**(2)**建议一个技术测试来指示实际的算法。 –
这有什么关系?它最好是随机的,除非你包括一个顺序的子句,在这一点上你知道答案。 – Andrew
“2.仅装载100个”...它会如何加载它们?来自哪里?如果你有1000台机器,每台机器只有1条记录呢?所有机器将运行相同的'SELECT * LIMIT 100'查询 –