当前位置: 首页 > 面试题库 >

Hadoop MapReduce-每个输入一个输出文件

曾鸿振
2023-03-14
问题内容

我是Hadoop的新手,正在尝试弄清楚它是如何工作的。至于练习,我应该实现类似于WordCount-
Example的东西。任务是读入多个文件,执行WordCount并为每个输入文件编写一个输出文件。Hadoop使用组合器,将map-
part的输出改编为reducer的输入,然后写入一个输出文件(我猜每个正在运行的实例)。我想知道是否可以为每个输入文件写入一个输出文件(因此保留inputfile1的字词并将结果写入outputfile1,依此类推)。是否有可能覆盖Combiner-
Class或对此有其他解决方案(我不确定这是否应该在Hadoop-Task中解决,但这是练习)。

谢谢…


问题答案:

map.input.file环境参数具有映射器正在处理的文件名。在映射器中获取此值,并将其用作映射器的输出键,然后将单个文件中的所有k /
v转到一个化简器。

映射器中的代码。顺便说一句,我正在使用旧的MR API

@Override
public void configure(JobConf conf) {
    this.conf = conf;
}

@Override.
public void map(................) throws IOExcepthtml" target="_blank">ion {

        String filename = conf.get("map.input.file");
        output.collect(new Text(filename), value);
}

并使用MultipleOutputFormat,这允许为作业编写多个输出文件。文件名可以从输出键和值派生。



 类似资料:
  • 文件 std::fs::File 本身实现了 Read 和 Write trait,所以文件的输入输出非常简单,只要得到一个 File 类型实例就可以调用读写接口进行文件输入与输出操作了。而要得到 File 就得让操作系统打开(open)或新建(create)一个文件。还是拿例子来说明 use std::io; use std::io::prelude::*; use std::fs::File;

  • 我正在使用Flink来处理我的流数据。 流媒体来自其他一些中间件,如Kafka、Pravega等。 说Pravega正在发送一些文字流,<代码>你好,世界,我的名字是 。 我需要的是三个过程步骤: 将每个单词映射到我的自定义类对象。 将对象映射到String。 将字符串写入文件:一个字符串写入一个文件。 例如,对于流,我应该得到五个文件。 这是我的代码: 此代码将所有结果输出到Flink日志文件。

  • 我是Hadoop的新手,但这是我上个月的一个学习项目。 为了使这一点足够模糊,以便对其他人有用,让我先抛出基本目标……假设: < li >显然,您有一个大型数据集,包含数百万个基本ASCII文本文件。 < ul > < li >每个文件都是一个“记录” e. g. /user/hduser/data/customer1/YYYY-MM-DD, /user/hduser/data/customer2

  • 问题内容: 我正在使用命令来获取目录中的文件名,但输出在一行中。 像这样: 我需要一个内置的替代方法来获取文件名,每个文件名都换行,如下所示: 问题答案: 使用该选项(请注意,这是一个“一个”数字,而不是小写字母“ L”),如下所示: 不过,首先请确保您的支持。GNU coreutils(安装在标准Linux系统上)和Solaris一样;但如果有疑问,请使用或或查看文档。例如:

  • 目录表 文件 使用文件 储存器 储存与取储存 概括 在很多时候,你会想要让你的程序与用户(可能是你自己)交互。你会从用户那里得到输入,然后打印一些结果。我们可以分别使用raw_input和print语句来完成这些功能。对于输出,你也可以使用多种多样的str(字符串)类。例如,你能够使用rjust方法来得到一个按一定宽度右对齐的字符串。利用help(str)获得更多详情。 另一个常用的输入/输出类型