如何有效地对hive排序(排序)大数据?

时间:2011-07-12 11:32:28

标签: hadoop mapreduce hive apache-pig

我想有效地对大数据集进行排序(即使用自定义分区程序,如此处所述:How does the MapReduce sort algorithm work?),但我想用hive来完成。

但是,Hive手册指出“order by”由单个reducer执行。 这让我感到惊讶,因为猪确实实现了类似于文章的内容 - pig impl

我是否遗漏了某些东西,或者说蜂巢根本不适合这份工作?

3 个答案:

答案 0 :(得分:2)

我认为Hive不适合这项工作。至少现在(是。它被构建为用作OLAP /报告工具,并且其未被优化以产生大的结果数据集,因为大多数分析查询产生相对小的结果集。结果 - 他们具有良好的TOP N能力,但不是很好的总订单。

如果您之前没有遇到过 - 我建议您查看Hadoop的terasort示例,该示例专门用于使用MR以最佳方式对大型数据集进行排序。 http://hadoop.apache.org/common/docs/r0.20.1/api/org/apache/hadoop/examples/terasort/package-summary.html

答案 1 :(得分:1)

在Hive中进行总排序不可能使用多个Reducer。它尚未实施 - https://issues.apache.org/jira/browse/HIVE-1402

如果您想要有效的总排序,那么使用pig会更容易,而不是编写自定义MR作业。

答案 2 :(得分:0)

Hive生成用于执行查询的MapReduce作业。在您的特定情况下,实际排序由Hadoop MapReduce框架完成,然后将数据输入到reducer中。