通过hadoop mapreduce限制处理记录的数量

时间:2014-03-13 11:32:03

标签: hadoop mapreduce

我有一个hugh文件(hive表有超过20亿条记录) 我需要运行一个mapreduce来处理前10k个记录。

是否有一种通过hadoop mapreduce限制处理记录数的有效方法?

2 个答案:

答案 0 :(得分:0)

您可以使用LIMIT

SELECT * FROM T LIMIT 10000

但它返回10k随机记录。由于MapReduce独立处理数据块,您无法说出哪个记录​​是第一个记录,哪个记录是最后一个记录。

如果你知道记录的顺序,这是一个获得你想要的东西的技巧:

SET mapred.reduce.tasks = 1
SELECT * FROM T SORT BY SORT_FIELD DESC LIMIT 10000

你仍然需要处理所有20亿条记录。

答案 1 :(得分:0)

您可以将LIMIT与任务规范一起使用。但是,如果必须一次又一次地执行此操作,那么更好的自动化解决方案是使用OOZIE(hadoop的工作流编辑器),可以在hive中为您的数据创建分区。