这是背景。我的mapreduce工作有以下输入(示例):
Apache Hadoop
Apache Lucene
StackOverflow
....
(实际上每行代表一个用户查询。我想要我的 RecordReader
类读取一行,然后将几个键值对传递给Map器。例如,如果 RecordReader
得到 Apache Hadoop
,然后我希望它生成以下键值对并将其传递给Map器:
Apache Hadoop - 1
Apache Hadoop - 2
Apache Hadoop - 3
(“-”是分隔符)我发现 RecordReader
传递键值 next()
方法:
next(key, value);
每次调用recordreader.next()时,只有一个键和一个值作为参数传递。那我该怎么完成工作呢?
3条答案
按热度按时间5jdjgkvh1#
试着不要给予key:-
7cjasjjr2#
我想如果你想发送到Map使用相同的键;您必须实现您的所有者recordreader;例如,您可以创建一个mutlirecordreader来扩展linerecordreade;这里您必须更改nextkeyvalue方法;这是linerecordreade的原始代码:
你可以这样改变它:
我想这个适合你
vmjh9lq93#
我相信你可以简单地用这个:
这里n是要传递的值的数目。例如,对于指定的键值对:
n等于3。