是否可以通过Mongo Connector将多个mongo集合导入Hadoop

时间:2014-10-29 14:29:12

标签: mongodb hadoop emr

我们正在与MongoDB和Amazon EMR合作开发概念验证。我们已经能够获得一个简单的端到端解决方案,它可以从mongo中的一个集合中读取数据,执行map / reduce函数,然后将输出写入Mongo中的另一个集合。

我的问题是 - 是否可以从Mongo中读取其他用于查找目的的集合。即,collection1中的所有数据都将对其执行map / reduce函数,但map / reduce函数将使用collection2和collection3中的数据进行查找。

如果这不可能 - 那么将查找数据导入hadoop以便将其用于查找目的的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

可以在Map-Reduce过程中查找外部资源。但是..

  • ...您不能使用MongoDB Hadoop Connector进行查找,因为它只为Map-Reduce作业创建输入。而是使用Java MongoDB driver来查询您的集合,就像在任何标准Java应用程序中一样。
  • ...如果您并行地大量查询同一个集合,它可能会成为性能问题。 (虽然可以通过向MongoDB集群添加更多服务器来解决这个问题,但这可能超出了您的预算。)

另一种方法是使用Hadoop's caching mechanism。因此,您需要将数据导出到Hadoop集群(hdfs://...)上的文件中。每个作业只读取一次数据并复制到从属节点。如果这是一个很好的选择,取决于文件的大小以及数据的最新状态。