如何在HBase中区分两个表

时间:2013-09-18 03:18:42

标签: hadoop hbase

我正在尝试比较HBase中的两个不同的表,以便我可以自动验证我们用于在HBase中移动数据的一些ETL过程。比较HBase中两个表的最佳方法是什么?

我的用例如下:

我要做的是创建一个将成为我预期输出的表。该表将包含我期望通过针对输入文件执行团队代码而创建的所有数据。然后,我将获取实际输出表和预期输出表之间的差异,以验证被测组件的完整性。

3 个答案:

答案 0 :(得分:3)

我不知道开箱即用的东西,但你可以写一个多表格地图/简化。

映射器只会从每个表中发出键(值为所有hbase键值加上表名) reducer可以确保每个键有2条记录并比较键值。当只有一个键时,它可以看到哪个表不同步

答案 1 :(得分:2)

我知道这个问题有点旧,但桌子有多大?如果它们都适合内存,你可以使用HBaseStorage将它们加载到Pig中,然后使用Pig内置的DIFF函数来比较生成的包。

根据文档,即使对于不适合内存的大型表,这也会有效,但它会非常慢。

答案 2 :(得分:0)

dataset1 = LOAD '/path/to/dataset1' USING PigStorage('<your delimiter>') AS (a:chararray, b:chararray, c:chararray, d:chararray);
dataset2 = LOAD '/path/to/dataset2' USING PigStorage('<your delimiter>') AS (a:chararray, b:chararray, c:chararray, d:chararray);

dataset3 = COGROUP dataset1 BY (a, b,c, d), dataset2 BY (a, b, c, d);

dataset4 = FOREACH dataset3 GENERATE DIFF(dataset1,dataset2);
相关问题