HBase 1.2 - 删除带有可见性标签的单元格
HBase 1.2 - Deleting Cell with Visibility Label
在 HBase 1.2 中,我有:
- 具有全局权限 'RW' 和以下授权的用户 testShellUser:testShell_visY
- table testShellTable 中的一个单元格具有以下可见性标签:testShell_visY
这里是 testShellUser 的 "proof" 授权和特权:
hbase(main):001:0> get_auths 'testShellUser'
testShell_visY
0 row(s) in 1.3290 seconds
hbase(main):003:0> user_permission 'testShellTable'
User Namespace,Table,Family,Qualifier:Permission
testShellUser default,testShellTable,,: [Permission: actions=READ,WRITE]
hbase default,testShellTable,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
2 行在 0.2210 秒内
当以 testShellUser 身份登录到 HBase shell 时,我可以看到单元格:
hbase(main):009:0> scan 'testShellTable'
ROW COLUMN+CELL
2 column=cf:name, timestamp=1500315396737, value=Wilma
虽然被验证为 testShellUser,但我无法删除 单元格——也就是说,下面的命令什么都不做:
delete 'testShellTable', '2', 'cf:name', 1500315396737
是否有命令或上述命令的变体允许 testShellUser 删除此单元格(不提升用户的 privileges/authorizations 或从中删除可见性标签单元格)?
在尝试了 HBase shell 之后,我似乎找到了 "solution."
看来,如果一个单元格有可见性字符串,那么对于删除单元格的 delete 命令,delete 命令必须提供与单元格可见性字符串相匹配的可见性字符串标准。因此,对于我在原始问题中提到的情况,必须使用以下 delete 命令:
delete 'testShellTable', '2', 'cf:name', 1500315396737, {VISIBILITY=>'testShell_visY'}
附带说明一下,用户似乎还可以删除用户不可见的单元格。如果在我的例子中,用户拥有授权字符串 "testShell_visX",那么用户对 "testShellTable" 的扫描将不会显示该单元格,但上述删除命令仍会删除该单元格。
在 HBase 1.2 中,我有:
- 具有全局权限 'RW' 和以下授权的用户 testShellUser:testShell_visY
- table testShellTable 中的一个单元格具有以下可见性标签:testShell_visY
这里是 testShellUser 的 "proof" 授权和特权:
hbase(main):001:0> get_auths 'testShellUser'
testShell_visY
0 row(s) in 1.3290 seconds
hbase(main):003:0> user_permission 'testShellTable'
User Namespace,Table,Family,Qualifier:Permission
testShellUser default,testShellTable,,: [Permission: actions=READ,WRITE]
hbase default,testShellTable,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]
2 行在 0.2210 秒内
当以 testShellUser 身份登录到 HBase shell 时,我可以看到单元格:
hbase(main):009:0> scan 'testShellTable'
ROW COLUMN+CELL
2 column=cf:name, timestamp=1500315396737, value=Wilma
虽然被验证为 testShellUser,但我无法删除 单元格——也就是说,下面的命令什么都不做:
delete 'testShellTable', '2', 'cf:name', 1500315396737
是否有命令或上述命令的变体允许 testShellUser 删除此单元格(不提升用户的 privileges/authorizations 或从中删除可见性标签单元格)?
在尝试了 HBase shell 之后,我似乎找到了 "solution."
看来,如果一个单元格有可见性字符串,那么对于删除单元格的 delete 命令,delete 命令必须提供与单元格可见性字符串相匹配的可见性字符串标准。因此,对于我在原始问题中提到的情况,必须使用以下 delete 命令:
delete 'testShellTable', '2', 'cf:name', 1500315396737, {VISIBILITY=>'testShell_visY'}
附带说明一下,用户似乎还可以删除用户不可见的单元格。如果在我的例子中,用户拥有授权字符串 "testShell_visX",那么用户对 "testShellTable" 的扫描将不会显示该单元格,但上述删除命令仍会删除该单元格。