Hive 仅当值不同时更新HBase表

Hive 仅当值不同时更新HBase表,hive,hbase,apache-pig,Hive,Hbase,Apache Pig,我正在通过Pig将数据加载到HBase。pig脚本每天运行,以在各种配置单元表中查找更新的记录,执行连接和处理,然后加载到HBase。我遇到的问题是,有时会更新记录的一部分,但不会更新其他部分 示例:配置单元表1和配置单元表2中存在键为abcd123的记录。在配置单元表1中有新数据,但在配置单元表2中没有。我的pig脚本连接两个表,然后将连接的记录加载到hbase,更新hbase中键abcd123的现有记录 是否有一种方法可以让HBase检查当前HBase中密钥的数据是否与pig脚本尝试加载的数

我正在通过Pig将数据加载到HBase。pig脚本每天运行,以在各种配置单元表中查找更新的记录,执行连接和处理,然后加载到HBase。我遇到的问题是,有时会更新记录的一部分,但不会更新其他部分

示例:配置单元表1和配置单元表2中存在键为abcd123的记录。在配置单元表1中有新数据,但在配置单元表2中没有。我的pig脚本连接两个表,然后将连接的记录加载到hbase,更新hbase中键abcd123的现有记录


是否有一种方法可以让HBase检查当前HBase中密钥的数据是否与pig脚本尝试加载的数据不同,然后只接受不同值的写入?使用未更改的数据束更新行没有意义,只需获得一个已更改的值。

您需要开发自定义解决方案来实现此目的,您可以尝试:

方法1-您可以维护数据集的两个副本,第一个在hive/pig中,另一个在hbase中,始终保持同步。每当收到新的更改(表1或表2)时,连接表1和表2,然后将旧数据集与新创建的数据集进行比较,以找出需要更新的增量记录。将增量更改更新为hbase

方法2-将日期列附加到两个表(表1和表2),这将帮助您找出增量变化。连接这两个表,并使用date列查找delta chagnes。(如果需要更多详细信息,请添加评论)。

对于增量更改的每个记录,使用行键查询hbase,然后将新值与hbase值进行比较。如果某些内容已更改,则更新hbase中的行键值

谢谢,方法2似乎对我有效。谢谢