gpt4 book ai didi

hadoop - HIVE 查询与 Hadoop 提供的 mapreducer 数量之间的关系?

转载 作者:可可西里 更新时间:2023-11-01 17:01:30 26 4
gpt4 key购买 nike

我在 HIVE shell 中执行一个查询

SELECT tradeId, bookid, foid from trades where bookid='"ABCDEFG"'

"trades" 表在 bookid 上有索引。当查询运行时,它显示 Mappers 和 Reducers 的详细信息如下:-

Number of reduce tasks is set to 0 since there's no reduce operator
Hadoop job information for Stage-1: number of mappers: 48; number of reducers: 0
Time taken: **606.183 seconds**, Fetched: **18 row(s)**

如果您看到仅获取 18 行就花费了大量时间。我的问题是我在这里做错了什么? recuder 应该是非零的吗?如果我使用

设置它会有帮助吗
set mapred.reduce.tasks = some_number

索引不应该有助于更快地检索数据吗?

最佳答案

当您进行简单选择时,所有过滤和列选择都由映射器本身完成。这里没有 reducer 任务的目的,因此 reducer 的数量为零 - 这很好。您的表中可能有大约 48* block 大小的数据量,因此它生成了 48 个映射器。每个 DN 有多少个 map 槽,当您发出查询时其中有多少是空闲的?很可能所有 48 个都不是并行运行的。虽然它只返回 18 行,但它读取了整个表。您的表是否在 bookid 列上分桶和聚类 - 在这种情况下,您可以使用 TABLESAMPLE 子句使其只读取包含您的 ABCDEFG 值的桶。

关于hadoop - HIVE 查询与 Hadoop 提供的 mapreducer 数量之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23571686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com