Accumulo インスタンスがあり、一部のテーブルには、現在のユーザーが持っていない可視性トークンで書き込まれたデータがあります。さまざまな理由から、すべての可視性文字列/トークンがテーブル内にあることはわかりません。このため、孤立したデータがあります。Accumulo ルート ユーザーまたは他のユーザーが、トークンが割り当てられていなくても、特定のテーブル内のデータの可視性文字列が何であるかを判断する方法はありますか?
2 に答える
3
これを行うには、基礎となる RFile を直接読み取る必要があります。これを行う 1 つの方法は、付属の PrintInfo 管理ユーティリティを使用することです。したがって、HDFS からファイルを読み取ることができるユーザーとして、次を実行します。
accumulo org.apache.accumulo.core.file.rfile.PrintInfo --dump [hdfs:///path/to/files/xxx.rf]
おそらく「ファイル」列ファミリーのメタデータ テーブルをスキャンして、テーブルに対応するファイルを見つける必要があります。ただし、詳細は、使用している Accumulo のバージョンによって異なります。
于 2014-11-19T19:52:31.277 に答える
1
いくつかの方法がありますが、そのほとんどはコードの記述を伴います。
- Accumulo を変更して可視性フィルタリングを無効にすることもできます (組み込みの必須イテレータである VisibilityFilter の変更が必要です)。
- すべてのエントリの可視性を "SUPERUSER|OLDLABEL" のようなものに変換するカスタム メジャー コンパクション イテレータを記述し、データを検査するユーザーに "SUPERUSER" 権限を付与できます。可視性を別のログまたは何かに報告するだけの主要な圧縮イテレータを作成することもできます。これは後で調べることができます。(alter-table パーミッションと、イテレータをクラスパスに追加する機能が必要です)。
- ファイルの内容を直接読み取ることができます (基になる分散ファイルシステムへの直接アクセスが必要です。RFile Reader と関連クラスまたはこの他の回答を参照してください)。
于 2014-11-19T03:15:54.443 に答える