Hadoop MultipleInputs,具有不同分隔符的TextInputFormat

时间:2015-07-01 09:20:15

标签: java hadoop mapreduce

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

MultipleInput允许您添加多个映射器,每个映射器都有自己的inputformat:

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)?

1 个答案:

答案 0 :(得分:0)

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

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