hadoop中KeyValueTextInputFormat和TextInputFormat之间的主要区别是什么?

Vit*_*uli 1 hadoop mapreduce

有人可以给我一个实际情况,我们必须使用KeyValueTextInputFormatTextInputFormat??

sur*_*iva 6

TextInputFormat类的源文件的每一行转换成在BytesWritable键表示偏移的记录和文本价值代表了整个记录本身键/值类型.

KeyValueTextInputFormat是TextInputFormat的扩展版本,当我们必须将每个源记录作为文本/文本对获取时非常有用,其中通过使用固定分隔符拆分记录来从记录中填充键/值.

考虑下面的文件内容,

AL#Alabama
AR#Arkansas
FL#Florida
Run Code Online (Sandbox Code Playgroud)

如果TextInputFormat已配置,您可能会看到键/值对为,

0    AL#Alabama
14   AR#Arkansas
23   FL#Florida
Run Code Online (Sandbox Code Playgroud)

如果KeyvalueTextInputFormat配置了conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", "#"),您可能会看到结果为,

AL    Alabama
AR    Arkansas
FL    Florida
Run Code Online (Sandbox Code Playgroud)