我正在HIVE shell中执行查询
SELECT tradeId, bookid, foid from trades where bookid='"ABCDEFG"'
表"trades"在 bookkid 上有索引。当查询运行时,它显示了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行。我的问题是我做错了什么?读卡器应该是非零的吗?如果我用
设置它会有帮助吗?set mapred.reduce.tasks = some_number
索引不应该帮助更快地检索数据吗?
当您进行简单的选择时,所有的过滤和列选择都是由映射器本身完成的。这里没有减速器任务的目的,因此减速器的数量为零-这很好。你可能有大约48*块大小的数据在你的表中,所以它产生了48个映射器。每个DN有多少个地图槽?当你启动查询时,其中有多少是空闲的?很有可能所有48个程序都不是并行运行的。尽管它只返回18行,但它读取了整个表。您的表是否存储在bookid列上并聚集在一起—在这种情况下,您可以使用TABLESAMPLE
子句使其仅读取包含ABCDEFG值的存储桶