如何最简单地运行多个不同的映射器类(使用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
)?
答案 0 :(得分:0)
如果您需要多输入格式,则可以创建自己的输入格式,以修改分隔符并将其用于输入路径。你可以look在这里。
您的InputFormat类将使用您所需的分隔符覆盖createRecordReader()。