我在CouchDB中有大量的数据,但我最近发现couch中的mapreduce函数有多弱(没有链接)。
所以我有这样的想法:使用Hadoop从CouchDB数据库运行map reduce查询,并希望将最终结果存储在另一个CouchDB中?
这太疯狂了吗?我知道我可以设置Hbase来做到这一点,但我不想将我的数据从CouchDB迁移到Hbase。我喜欢沙发作为数据存储。
显然,CouchDB应该能够通过Sqoop将数据流式传输到Hadoop,但除了这个链接,我没有看到任何其他信息。最糟糕的情况是,您可以编写自己的输入读取器从CouchDB中读取数据,或者定期导出数据并将其放入HDFS中,然后从那里运行。
CouchDB中的MapReduce函数受到限制,以简化结果的缓存。视图不必搜索受更改影响的视图,而是被设计为独立的。
这意味着,如果你有复杂的MapReduce代码,你可以使用CouchApp这样的工具将函数嵌入MapReduce函数中。我很难找到这方面的参考,但您可以使用宏!code
在视图中嵌入JavaScript函数。正在使用require()或//!json!CouchDB中的代码?
这可以通过将大部分代码放在共享函数中,并且只在不同的视图中调用函数,从而有助于在不进行链接的情况下获得链接的一些生产力优势。为了链的性能优势,如果这就是你想要的,那么你最好还是转到HBase。