我有一个hugh文件(hive表有超过20亿条记录) 我需要运行一个mapreduce来处理前10k个记录。
是否有一种通过hadoop mapreduce限制处理记录数的有效方法?
答案 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中为您的数据创建分区。