我使用 CouchDB 已经有一段时间了,我正在考虑在 HBase / Hadoop 中做一个小的学术项目。我阅读了一些关于它们的材料,但找不到一个问题的好答案:
在 Hadoop/HBase 和 CouchDB 中,都使用 MapReduce 作为它们的主要查询方法。但是,有一个显着的区别:CouchDB 以增量方式执行此操作,使用视图,索引添加到数据库的每个新数据,而 Hadoop(从我看到的所有示例中)通常用于对整个数据集执行完整查询. 我缺少的是使用 Hadoop MapReduce 构建并主要维护索引的能力,例如 CouchDB 的视图。我看到了一些关于如何使用 MapReduce 创建初始索引的示例,但没有看到增量更新。
我相信这里的主要挑战是仅在自给定时间戳(最后一个索引作业的时间)以来更改的行上运行索引作业。这将使这些作业运行很短的时间,允许它们频繁运行,从而使索引保持相对最新。
我预计这种使用模式会非常普遍,并且很惊讶在网上没有看到任何关于它的信息。我已经看到了IndexedHbase和HbaseIndexed,它们都基于非键行在 HBase 上提供二级索引。这不是我需要的。我需要根据一行或多行的内容任意定义索引的编程能力。