Hadoop->Mapper->我们如何从给定的输入路径中只读取每个文件的前 N ​​行?

标签 hadoop dictionary process rows

我是 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/

相关文章:

shell - 使用 azure 数据工厂 (ADF) 从 Pig/Hive 事件运行 shell 脚本

hadoop: reducer 输出到另一个 reducer

hadoop - 通过Swagger Rest API调用运行Sqoop Java程序时,包丢失错误

ios - withContentsofURL 可以声明超时限制吗?

java - 转换 map 中的两个原始数组。并将结果映射转换为该数组

c++ - 从 c++ 使用 hadoop HDFS,未定义对 `hdfsConnect' 的引用

exception - 当传递非映射参数时,期望映射的函数什么时候会默默地返回 nil?

shell - 使用 SIGTSTP 挂起子进程后,shell 没有响应

process - 在C#中启动非exe进程时可以使用模拟吗?

Linux - 系统启动时自动运行哪些进程