我怎样才能“区分”两个 Accumulo 表?

我怎样才能“区分”两个 Accumulo 表?

如果我想比较两个相似的 Accumulo 表并突出它们的差异,我该怎么做?

我的第一个想法是创建数据库转储并diff在文件上运行 Unix,但这无法扩展。

我的第二个想法是,也许有一种方法可以同步两个 Accumulo 表,希望有一个试运行选项,可以在某处收集差异。

...在 HBase 中至少有一种方法可以做到这一点?

答案1

遗憾的是,我不知道有什么东西可以做到这一点。

简单来说,您可以使用两个扫描仪实现这一点并进行合并读取。由于两个扫描仪都返回已排序的数据,因此如果两个键值相等,则将两个扫描仪都推进。如果来自扫描仪 1 的键在来自扫描仪 2 的键之前排序,则您知道该键不存在于来自扫描仪 2 的表中,并且您推进扫描仪 1。如果来自扫描仪 2 的键在来自扫描仪 1 的键之前排序,则该键不存在于来自扫描仪 2 的表中,并且您推进扫描仪 2。

但是,就像您所说的那样,这会非常慢,因为您有一个线程读取一个表,并且您可能有多个核心来同时运行。

为了实现这种规模,您可以将表“分区”为存储桶(例如,如果您的表键是字母表 [A、B、C、... Z],则在这种情况下每个分区可以是一个字母),并且可以并行化相同的算法。使用字母表示例,您可以让 26 个客户端同时读取表的各个部分。这也可以轻松实现为 map-reduce 作业。

相关内容