如何确定Accumulo表的可见性?

时间:2014-11-18 17:25:06

标签: accumulo

我们有一个Accumulo实例,有些表的数据是用可见性令牌编写的,我们当前的用户都没有。由于各种原因,我们不知道表中的所有可见性字符串/标记是什么。因此,我们有孤儿数据。对于Accumulo root用户或其他用户来说,他们是一种确定给定表中数据的可见性字符串的方式,而不必将这些令牌分配给它们吗?

2 个答案:

答案 0 :(得分:3)

您必须直接阅读基础RF,才能执行此操作。一种方法是使用包含的PrintInfo管理实用程序。因此,作为可以读取HDFS文件的用户,请运行:

accumulo org.apache.accumulo.core.file.rfile.PrintInfo --dump [hdfs:///path/to/files/xxx.rf]

您必须找到与您的表格对应的文件,可能是通过扫描元数据表中的"文件"列族。具体情况将根据您使用的Accumulo版本而有所不同。

答案 1 :(得分:1)

有几种方法,其中大多数涉及编写代码。

  1. 您可以修改Accumulo以禁用可见性过滤(需要修改VisibilityFilter,内置和强制迭代器)。
  2. 您可以编写一个自定义主要压缩迭代器,将所有条目的可见性转换为" SUPERUSER | OLDLABEL",然后授予" SUPERUSER"授权用户您要检查数据。您还可以编写一个主要的压缩迭代器,它只是将它看到的可见性报告给单独的日志或其他东西,以后可以进行检查。 (需要alter-table权限,以及将迭代器添加到类路径的能力)。
  3. 您可以直接读取文件的内容(需要直接访问底层分布式文件系统;请参阅RFile Reader及相关类或this other answer)。