如何在Apache Hive中为(小)数据集并行化查询

时间:2011-02-24 08:44:00

标签: mapreduce parallel-processing hive

我在部分数据集上测试最新的Hive。我只通过自定义SerDe阅读了几GB的日志文件。

当我运行简单的Group By查询(4个MR作业)时,我会收到诸如

之类的日志
  • 地图:100%
  • 减少:0%
  • 地图:85%
  • 减少:0%
  • 地图:86%
  • 减少:0%

一直只在8核服务器上使用一个核心。有点浪费......

我已激活并行选项但仍无法并行化。我已将减少作业的数量设置为8。

我的期望是,由于我的数据集已经过分区(=>不同的文件),因此至少有一些map-reduce阶段可以在这些文件上并行运行。

我的理解错了吗?是否有一种特定的方式来编写查询?

由于

1 个答案:

答案 0 :(得分:2)

如果你只做一个简单的GROUP BY,唯一真正的处理是比较,这并不难。那就是说,你跑了多少个地图制作者?任务分析器不会并行运行。相反,hadoop银行在多个任务工作者运行并行化。因此,如果您每个节点只运行一个地图任务,则不会看到任何内容。

另一种可能性是,因为你在做一个GROUP BY,你在IO中而不是在处理器上,所以不需要将多个核心带入其中。