如果具有相同的值,则停止 Hbase 更新操作
Posted
技术标签:
【中文标题】如果具有相同的值,则停止 Hbase 更新操作【英文标题】:Stop Hbase update operation if it have same value 【发布时间】:2018-08-15 10:39:29 【问题描述】:我在 Hbase 中有一个名为 'xyz' 的表。当我对此表执行更新操作时,它会更新一个表,即使它是相同的记录。
如何控制不添加第二条记录。
例如:
create 'ns:xyz',NAME=>'cf1',VERSIONS => 5
put 'ns:xyz','1','cf1:name','NewYork'
put 'ns:xyz','1','cf1:name','NewYork'
如果我检查所有版本,上面的 put 语句会给出 2 条具有不同时间戳的记录。我期望它不应该添加第二条记录,因为它具有相同的值
【问题讨论】:
【参考方案1】:HBase 不会查看整行并确定它是否与您添加的数据相同。这将是一项昂贵的操作,而 HBase 以其快速的插入速度而自豪。
如果您真的很想这样做(我会问您是否真的想这样做),您应该先执行 GET 以查看数据是否已经存在于表中。
您也可以在每次 PUT 数据时编写一个协处理器来执行此操作,但同样性能不佳。
【讨论】:
【参考方案2】:正如@Ben Watson 所提到的,HBase 最出名的是它的写入性能,因为它不需要检查值是否存在,因为默认情况下会维护多个版本。
您可以做的一个技巧是,您可以使用自定义版本控制。如下面的屏幕截图所示,您已经有两个版本的行键。现在,如果您要插入具有相同时间戳的相同记录。 HBase 将仅用该值覆盖相同的记录。
注意:由您的应用程序为特定值获取相同的时间戳。
【讨论】:
以上是关于如果具有相同的值,则停止 Hbase 更新操作的主要内容,如果未能解决你的问题,请参考以下文章
pyspark:如果列在不同行中具有相同的值,则合并两行或多行
Leetcode练习(Python):树类:第100题:相同的树:给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。