如何区分hbase中的两个表

ulmd4ohb  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(338)

我正在尝试比较hbase中的两个不同表,以便能够自动验证用于在hbase中移动数据的一些etl过程。在hbase中比较两个表的最佳方法是什么?
我的用例如下:
我要做的是创建一个表作为我的预期输出。这个表将包含我期望通过对输入文件执行teams代码来创建的所有数据。然后,我将获取实际输出表和预期输出表之间的差异,以验证被测组件的完整性。

pjngdqdw

pjngdqdw1#

我知道这个问题有点老了,但是table有多大?如果它们都能放入内存,您可以使用hbastorage将它们加载到pig中,然后使用pig的内置diff函数来比较生成的包。
根据文档,即使对于不适合内存的大型表,这种方法也能起作用,但是速度会非常慢。

qlckcl4x

qlckcl4x2#

我不知道任何现成的东西,但你可以写一个多表Map/减少。
Map程序只会从每个表中发出键(一个值是所有hbase键值加上一个表名),reducer可以确保每个键有2条记录并比较键值。当只有一个键时,它可以看到哪个表不同步

cqoc49vn

cqoc49vn3#

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);

相关问题