如何最简单地运行多个不同的映射器类(使用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/