我是 Hadoop 新手,我的要求是只需要处理每个输入文件中的前 10 行。以及如何在读取每个文件的 10 行后退出映射器。
如果有人可以提供一些示例代码,那将是很大的帮助。
提前致谢。
最佳答案
您可以重写映射器的 run 方法,并且在迭代映射循环 10 次后,您可以从 while 循环中中断。这将假设您的文件不可拆分,否则您将获得每个拆分的前 10 行:
@Override
public void run(Context context) throws IOException, InterruptedException {
setup(context);
int rows = 0;
while (context.nextKeyValue()) {
if (rows++ == 10) {
break;
}
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}
关于Hadoop->Mapper->我们如何从给定的输入路径中只读取每个文件的前 N 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20009648/