2013-06-25 52 views
2

我一直在使用CouchDB一段时间,而且我正在考虑在HBase/Hadoop中做一个小的学术项目。我读了一些关于它们的材料,但是找不到一个好的答案:使用Hadoop和HBase增量MapReduce

在Hadoop/HBase和CouchDB中都使用MapReduce作为它们的主要查询方法。但是,有一个显着的不同:CouchDB通过使用视图增量化地实现了这一点,索引每个添加到数据库的新数据,而Hadoop(从我看到的所有示例中)通常用于对整个数据集执行完整查询。我所缺少的是能够使用Hadoop MapReduce来构建并主要维护索引,如CouchDB的视图。我看到了一些关于如何使用MapReduce创建初始​​索引的例子,但没有提到增量更新。

我认为这里的主要挑战是只对自给定时间戳(上次索引作业的时间)以来更改的行运行索引作业。这将使这些工作运行很短的时间,使他们能够频繁运行,保持索引相对最新。

我预计这种使用模式非常普遍,并且很惊讶没有看到任何有关它的信息。我已经看到了IndexedHbaseHbaseIndexed,它们都提供了基于非关键行的HBase的二级索引。这是不是我需要什么。我需要编程能力根据一行或多行的内容任意定义索引。

回答

0

一种方法可能是使用Timestamp作为rowkey。这将允许您根据某些给定时间处理行。

由于我在谈论基于TS的rowkey,use hashing to avoid hotspotting

+0

我知道使用TS作为rowkey将允许我查询新创建的行,但是如何查询最近修改的行? –

+0

使用TimestampsFilter。 – Tariq