我正在寻找一个简单的方法来链后处理后的Map缩小作业的代码
具体来说,in涉及重命名\移出由创建的文件 org.apache.hadoop.mapred.lib.MultipleOutputs
(该类对输出文件名有限制,因此无法在mapreduce作业中直接生成文件)
我知道(或想到)的选择是:
将它添加到job creation代码中-这是我现在所做的,但是我更喜欢由jobtracker安排任务(以减少进程被中止的机会)
使用一个工作流引擎(luigi,oozie)-但是这对于这个问题来说似乎有点过头了
使用作业链接-这允许链接mapreduce作业-有可能链接一个“简单”的任务吗?
1条答案
按热度按时间7ajki6be1#
你的“简单”任务应该是一个Map只工作。map()接收文件名并重命名文件。为此,您必须编写自己的inputformat和recordreader,就像在链接中一样,但是您的recordreader不应该实际读取文件,只需在getcurrentkey()中返回文件名:
https://code.google.com/p/hadoop-course/source/browse/hadoopsamples/src/main/java/mr/wholefile/wholefileinputformat.java?r=3
https://code.google.com/p/hadoop-course/source/browse/hadoopsamples/src/main/java/mr/wholefile/wholefilerecordreader.java?r=3