如何最简单地运行多个不同的映射器类(使用MultipleInputs),它们都使用相同的输入格式,但具有不同的输入分隔符?

MultipleInput允许您添加多个映射器,每个映射器都有自己的输入格式:

MultipleInputs.addInputPath(Job job, Path path,
  Class<? extends InputFormat> inputFormatClass,
  Class<? extends Mapper> mapperClass)

通过在作业配置中设置配置键TextInputFormat来配置textinputformat.record.delimiter输入中的输入分隔符。便利!

但是,这意味着所有使用MultipleInput.addInputPath(?, TextInputFormat.class, ?)添加的映射器都必须共享相同的分隔符,如textinputformat.record.delimiter配置键所指定。

有什么方法可以解决此问题,而不必为每个映射器编译带有硬编码分隔符的单独的inputformat类(扩展TextInputFormat)?

最佳答案

如果需要多种输入格式,则可以创建自己的输入格式,仅用于修改定界符并将其用于输入路径。您可以在这里look

您的InputFormat类将使用所需的分隔符覆盖createRecordReader()。

关于java - Hadoop MultipleInputs,带有不同分隔符的TextInputFormat,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31157324/

10-11 07:25