我想编写从 HDFS 读取输入,使用 MapReduce 处理它并将输出写入 MongoDb 的 Java 程序。
这是场景:
- 我有一个 Hadoop 集群,它有 3 个数据节点。
- 一个 java 程序从 HDFS 读取输入,使用 MapReduce 处理它。
- 最后,将结果写入 MongoDb。
实际上,从 HDFS 读取并使用 MapReduce 处理它很简单。但是我被困在将结果写入 MongoDb 中。是否有任何 Java API 支持将结果写入 MongoDB?另一个问题是,由于它是一个 Hadoop Cluster,所以我们不知道哪个 datanode 将运行 Reducer 任务并生成结果,是否可以将结果写入安装在特定服务器上的 MongoDb 中?
如果我想将结果写入 HDFS,代码将是这样的:
@Override
public void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException
{
long sum = 0;
for (LongWritable value : values)
{
sum += value.get();
}
context.write(new Text(key), new LongWritable(sum));
}
现在我想将结果写入 MongoDb 而不是 HDFS,我该怎么做?