【问题标题】:how to pass 'Text' as Mapper input key in hadoop job?如何在hadoop作业中将“文本”作为映射器输入键传递?
【发布时间】:2013-08-01 11:51:09
【问题描述】:

我的文件内容会是这样的。

TestKey, TestValue
TestKey1, TestValue1

我想将 Mapper Key 作为 TestKey 和 Mapper Value 作为 TestValue 传递等等。

所以我尝试编写自定义 RecordReader 来实现这一点。

但是它的抛出错误,比如不能用文本种姓 LongWritable。

如何将文本作为映射器输入键传递?

对此高度赞赏的任何帮助。

谢谢, 尚卡尔

【问题讨论】:

  • 向您展示 RecordReader 会有所帮助。

标签: java hadoop mapreduce


【解决方案1】:

看来您需要将输入格式更改为KeyValueTextInputFormat,并将分隔符设置为mapreduce.input.keyvaluelinerecordreader.key.value.separator", "1

默认输入格式为TextInputFormat,它使用文件中的字节偏移量,格式为LongWritable 作为键,行作为值。这就是您目前看到错误的原因。

1:假设您使用的是新 API;旧 API 也有类似的东西。

【讨论】:

  • 好吧,杰森,我认为你的第一部分答案是正确的,但第二部分是默认输入格式,而不是 FileInputFormat,而是实际上扩展了 FileInputFormat 的 TextInputFormat。 KeyValueTextInputFormat 还在内部扩展了 FileInputFormat。
猜你喜欢
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多