我已经创建了一个hbase表
create 'user_data_table','personal_data','professional_data';
然后我在表中插入了几条记录
put 'user_data_table','user1','personal_data:Location','IL'
put 'user_data_table','user1','personal_data:FName','Deb'
put 'user_data_table','user1','personal_data:LName','D'
put 'user_data_table','user1','professional_data:dept','IT'
put 'user_data_table','user1','professional_data:salary','2000'
put 'user_data_table','user2','personal_data:FName','CH'
put 'user_data_table','user2','personal_data:LName','AK'
put 'user_data_table','user2','professional_data:dept','IT'
put 'user_data_table','user2','professional_data:salary','80000'
我创建了一个快照作为 snapshot 'user_data_table', 'snapshot-day-1'
然后我插入/更新了以下记录。
put 'user_data_table','user1','personal_data:Location','VA'
put 'user_data_table','user1','professional_data:salary','3000'
当我尝试引用配置单元表中的快照时,我没有得到旧数据。相反,我每次都会得到最新的数据。你知道为什么会这样吗。使用hbase snapshot reference创建配置单元表的命令如下所示。
CREATE EXTERNAL TABLE if not exists hbase_user_data_snapshot1_table(key string, Location string,FName string,LName string, dept string,salary string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,personal_data:Location,personal_data:FName,personal_data:LName,professional_data:dept,professional_data:salary",
"hive.hbase.snapshot.name"="snapshot-day-1")
TBLPROPERTIES ("hbase.table.name" = "user_data_table");
2条答案
按热度按时间bt1cpqcv1#
ddl是错误的。正确的方法如下。
注意TBL属性。我们不引用表,而是引用快照名称。
goqiplq22#
快照意味着(1)不会从现有hfiles中删除任何信息,(2)创建快照时这些hfiles的内容可以按需重建(隐藏任何附加内容)
但是hive-6584说。。。
绕过在线区域服务器api为完整扫描提供了很好的性能提升
…所以他们可能选择“绕过”时间点恢复部分,而只是将快照用作直接访问hfiles的后门。包括快照创建后附加的内容。也许 吧。