仅当值不同时才更新 HBase table

Updating HBase table only if value is different

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

示例: hive table 1和hive table 2中存在键为abcd123的记录。在hive table 1中存在新数据,但不在配置单元中 table 2. 我的 pig 脚本连接两个 tables,然后将连接的记录加载到 hbase,更新 hbase 中的现有记录以获取密钥 abcd123。

有没有一种方法可以让 HBase 检查当前在 hbase 中的键数据是否与 pig 脚本试图加载的数据不同,然后只接受不同值的写入?用一堆没有改变的数据更新行只是为了获得一个已经改变的值是没有意义的。

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

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

方法 2- 将日期列附加到 tables(table 1 和 table 2),这将帮助您找到出增量变化。加入两个 tables 并使用日期列找出 delta chagnes。 (如果您需要更多详细信息,请添加评论)。
对于增量更改的每个记录,使用行键查询 hbase,然后在新值与 hbase 值之间进行比较,如果某些内容已更改,则更新 hbase[=23 中的行键值=].