我正在通过HBase通过Pig加载数据。pig脚本每天运行以查找各种蜂巢表中的更新记录,执行联接和处理,然后加载到HBase。我遇到的问题是,有时记录的一部分会被更新,而其他部分则不会更新。
示例:带有键abcd123的记录存在于hive表1和hive表2中。在hive表1中,有新的数据,但在hive表2中没有。我的猪脚本将两个表连接起来,然后将连接的记录加载到hbase中,更新hbase中的现有记录以获取密钥abcd123。
是否有一种方法可以让HBase检查当前用于密钥的hbase中的数据是否与猪脚本试图加载的数据不同,然后只接受不同值的写入?用未更改的数据束更新行是没有意义的,只是为了获得一个已更改的值。
发布于 2016-10-26 06:29:59
为了实现这一点,您需要开发自定义解决方案,您可以尝试:
方法1-您可以维护数据集的两个副本,第一个在hive/pig中,另一个在hbase中,保持两者始终保持同步。每当收到新的更改(表1或表2)时,连接表1和表2,然后将旧数据集与新创建的数据集进行比较,以找出需要更新的增量记录。更新增量更改为hbase。
方法2-将日期列附加到两个表(表1和表2),这将帮助您了解增量更改。连接两个表,并使用date列查找增量字符。(如果需要更多细节,请添加注释)。
对于增量更改的每条记录,使用行键查询hbase,然后在新值与hbase值之间进行比较,如果发生了更改,则更新hbase中的行键值。
https://stackoverflow.com/questions/40244397
复制相似问题