gpt4 book ai didi

java - 如何为Hadoop Input Format中的一个输入行生成多个键值对?

转载 作者:可可西里 更新时间:2023-11-01 14:47:32 25 4
gpt4 key购买 nike

这是背景。我的 MapReduce 作业(示例)有以下输入:

Apache Hadoop
Apache Lucene
StackOverflow
....

(实际上每一行代表一个用户查询。这里不重要。)我希望我的 RecordReader 类读取一行,然后将几个键值对传递给映射器。例如,如果 RecordReader 获取 Apache Hadoop,那么我希望它生成以下键值对并将其传递给映射器:

Apache Hadoop - 1
Apache Hadoop - 2
Apache Hadoop - 3

(“-”是这里的分隔符。)我发现 RecordReadernext() 方法中传递键值:

next(key, value);

每次调用 RecordReader.next() 时,只会将一个键和一个值作为参数传递。那么我应该如何完成我的工作?

最佳答案

我相信你可以简单地使用这个:

public static class MultiMapper 
extends Mapper<LongWritable, Text, Text, IntWritable> {

@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {

for (int i = 1; i <= n; i++) {
context.write(value, new IntWritable(i));
}
}
}

这里的 n 是您要传递的值的数量。例如,对于您指定的键值对:

Apache Hadoop - 1
Apache Hadoop - 2
Apache Hadoop - 3

n 为 3。

关于java - 如何为Hadoop Input Format中的一个输入行生成多个键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com