如果hbase具有相同的值,则停止hbase更新操作

au9on6nz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(587)

我在hbase中有一个名为“xyz”的表。当我对此表执行更新操作时,它会更新一个表,即使它是同一条记录。
如何控制第二条记录不被添加。
如:

create 'ns:xyz',{NAME=>'cf1',VERSIONS => 5}

put 'ns:xyz','1','cf1:name','NewYork'

put 'ns:xyz','1','cf1:name','NewYork'

如果我检查所有版本,上面的put语句将给出两个具有不同时间戳的记录。我希望它不应该添加第二个记录,因为它有相同的值

0yg35tkg

0yg35tkg1#

hbase不会检查整行并确定它是否与您要添加的数据相同。这将是一个昂贵的操作,hbase以其快速的插入速度而自豪。
如果您真的很想这样做(我想问您是否真的想这样做),您应该先执行get来查看数据是否已经存在于表中。
您也可以在每次放入数据时编写一个协处理器来执行此操作,但性能同样不理想。

0yg35tkg

0yg35tkg2#

正如@ben watson所提到的,hbase最出名的是它在write中的性能,因为它不需要检查值的存在,因为默认情况下会维护多个版本。
你可以做的一件事是,你可以使用自定义版本控制。如下面的屏幕截图所示,一个行键已有两个版本。现在,如果要插入具有相同时间戳的相同记录。hbase将仅用该值覆盖同一记录。

注意:由应用程序为特定值获取相同的时间戳。

相关问题