2

我在 CouchDB 中有非常大量的数据,但我最近发现沙发中的 mapreduce 函数有多么严重(没有链接)。

所以我想到了使用 Hadoop 从 CouchDB 数据库运行 map reduce 查询,并希望将最终结果存储在另一个 CouchDB 数据库中?

这也太疯狂了吧?我知道我可以设置 Hbase 来执行此操作,但我不想将我的数据从 CouchDB 迁移到 Hbase。我喜欢沙发作为数据存储。

4

2 回答 2

0

CouchDB 中的 MapReduce 函数受限于简化结果的缓存。不必搜索受变更影响的视图,视图被设计为独立的。

这意味着如果您有复杂的 MapReduce 代码,您可以使用 CouchApp 之类的工具将函数嵌入到 MapReduce 函数中。我很难找到这方面的参考,但你是!code在视图中嵌入 JavaScript 函数的宏。在 CouchDB 中使用 require() 或 // !json, !code?

通过将大部分代码放在共享函数中,并仅在不同视图中调用函数,这有助于获得链接而不链接的一些生产力优势。对于链接的性能优势,如果这就是您所追求的,那么您最好只迁移到 HBase。

于 2012-07-19T18:30:36.843 回答
0

显然 CouchDB 应该能够通过 Sqoop 将数据流式传输到 Hadoop,但我没有看到除该链接之外的任何其他信息。最坏的情况是,您可以编写自己的输入阅读器从 CouchDB 中读取数据,或者定期导出数据并将其放到 HDFS 上并从那里运行。

于 2012-07-19T18:20:40.240 回答