我们正在一个项目中,我们将HBase用作运营数据存储;所有数据都实时传输到hbase。而且,每隔2小时,Hbase中的数据需要同步到Hive。这是为了使分析查询能够在最新数据之上运行。
要将数据从Hbase同步到Hive:
仅用于插入/更新方案,我可以使用hbase提供的timestamp列来了解插入/更新的记录。 对于“删除”方案,我正在努力寻找正确的方法。
HBase Scan API是否提供任何选项来实现?
还是我应该使用像Apache Phoenix这样的SQL选项呢?
答案 0 :(得分:1)
以下是《 HBase参考指南》第Keep Deleted Cells节的答案:
新的“原始”扫描选项将返回所有已删除的行,并删除 标记...
。 。 。[示例]
hbase(main):017:0>扫描'test',{ RAW => true ,VERSIONS => 1000}
ROW COLUMN + CELL
r1列= e:c1,时间戳= 14,值=值
r1列= e:c1,时间戳= 12,值=值
r1 column = e:c1,timestamp = 11, type = DeleteColumn
r1 column = e:c1,时间戳= 10,值=值0.0120秒内有1行
。 。
请注意,标记的类型可能不同- DeleteColumn 或 DeleteFamily –取决于发生了哪种DELETE。