【发布时间】:2013-10-21 16:06:04
【问题描述】:
我想编写 Java 程序,它从 HDFS 读取输入,使用 MapReduce 处理它并将输出写入 MongoDb。
这是场景:
- 我有一个 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,我该怎么做?
【问题讨论】:
-
你是什么意思,你在将结果写入 MongoDB 时遇到了困难? MongoDB 有一个可用的 Java API (docs.mongodb.org/ecosystem/drivers/java)。
-
在 Reducer 类中使用 mongo-java-driver?会成功吗?
-
为什么不试试呢? (为什么要将数据从 HDFS 复制到 MongoDB?)
-
大概能查询到吧。疯了,我知道。
-
嘿@user2597504,你能告诉我它是如何工作的(或者你是如何解决这个问题的)吗?你的问题和我好奇的一模一样。
标签: java mongodb hadoop mapreduce hdfs