2

Apache Phoenixを使用して、HBase テーブルで SQL クエリを実行しようとしています。公式ドキュメントに基づいて、SQL クエリを使用して既存のテーブルのスキーマを作成する必要があります。

CREATE TABLE TABLE_NAME (....)

phoenix API を介して (HBase API で作成された) 既存のテーブルに直接接続することでこれを回避しようとしましたが、例外が発生していました。問題は、Phoenix がこのクエリを実行すると、テーブルに多くのものが作成されることです。たとえば、hbase ダッシュボードのテーブルセクションでは、phoenix によってテーブルに追加された次のメタデータを確認できます。

'QUOTES', {METHOD => 'table_att', coprocessor$1 => '|org.apache.phoenix.coprocessor.ScanRegionObserver|1|', coprocessor$2 => '|org.apache.phoenix.coprocessor.UngroupedAggregateRegionObserver|1|', coprocessor$3 => '|org.apache.phoenix.coprocessor.GroupedAggregateRegionObserver|1|', coprocessor$4 => '|org.apache.phoenix.coprocessor.ServerCachingEndpointImpl|1|', coprocessor$5 => '|org.apache.phoenix.hbase.index.Indexer|1073741823|index.builder=org.apache.phoenix.index.PhoenixIndexBuilder,org.apache.hadoop.hbase.index.codec.class=org.apache.phoenix.index.PhoenixIndexCodec'}, {NAME => '0', DATA_BLOCK_ENCODING => 'FAST_DIFF', KEEP_DELETED_CELLS => 'true'}

pheonix がテーブルのメタ情報を変更しているようです (コプロセッサーとインデックス ビルダーが作成されます)。これは本番環境で問題を引き起こしますか (HBase API を使用するコードに干渉します)? もしそうなら、それを避ける方法は?

4

1 に答える 1

4

CREATE TABLEはい。Apache Phoenix は、またはここCREATE VIEWに記載されているように、基礎となる HBase テーブルのメタデータにコプロセッサーを追加します。コプロセッサーによって行われる処理は、API 呼び出しを行うクライアントによって Phoenix 固有の属性が設定された場合にのみトリガーされるため、これらは HBase API を使用するコードに干渉しません。

の場合、Phoenix VIEWこれらのメタデータの変更のみが行われます。の場合、Phoenix TABLEこれらのメタデータの変更に加えて、テーブルのすべての行に空の KeyValue が追加されます。これは、すべての列が null に設定されている場合に行が「消える」のを防ぐだけでなく、パフォーマンスを向上させるために行われます。詳細はこちら

于 2014-09-06T23:54:53.660 に答える