すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for HBase:HBase SQL (Phoenix) のよくある質問

最終更新日:Jun 11, 2026

ApsaraDB for HBase 上の HBase SQL (Phoenix) に関するよくある質問とその回答です。

Maven セントラルリポジトリでリリースされている ali-phoenix 最新バージョンの JAR パッケージ

  • ali-phoenix 4.x のデプロイメントパッケージは次のとおりです。

    GroupId

    ArtifactId

    Latest version

    com.aliyun.phoenix

    ali-phoenix

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-hive

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-spark

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-pherf

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-queryserver

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-queryserver-client

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-pig

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-flume

    4.12.0-AliHBase-1.1-0.9

    com.aliyun.phoenix

    ali-phoenix-core

    4.12.0-AliHBase-1.1-0.9

  • ali-phoenix 5.x のデプロイメントパッケージは次のとおりです。

    GroupId

    ArtifactId

    Latest version

    com.aliyun.phoenix

    ali-phoenix-shaded-thin-client

    5.2.5-HBase-2.x

    説明

    シンクライアントとサードパーティのビジネスアプリケーション間のパッケージの競合を避けるために、シンクライアントのシェードパッケージを使用してください。

ali-phoenix JDBC URL の形式

QueryServer が無効な場合はファットクライアントを使用し、QueryServer が有効な場合はシンクライアントを使用します。ali-phoenix は keytab ベースの認証をサポートしていないため、Java Database Connectivity (JDBC) の URL 形式は Apache Phoenix とは異なる点にご注意ください。

  • ファットクライアントドライバー

    [URL 構文]

      jdbc:phoenix:[[ZK_HOST1:port, ZK_HOST2:port, ZK_HOST3:port | comma-separated ZooKeeper クォーラム [:port] [:hbase ルート znode] ]

    [URL の例]

    jdbc:phoenix:localhost   
    jdbc:phoenix:localhost:123:/hbase  
    jdbc:phoenix:v1,v2,v3:123:/hbase  
    jdbc:phoenix:v1:2181,v2:2181,v3:2181:/hbase  
    jdbc:phoenix:v1:2181,v2:2181,v3:2181
  • シンクライアントドライバー

    [URL 構文]

    jdbc:phoenix:thin:[key=value[;key=value...]]

    [URL の例]

    jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF

QueryServer のサポート

  • HBase 1.x はファットクライアントモードで Phoenix 4.x を使用します。QueryServer を使用するには、ご自身でセットアップする必要があります。

  • HBase 2.0 には HBase SQL サービスが含まれており、QueryServer はデフォルトで有効になっています。

Tracing Web Application のサポート

現在サポートされていません。この機能は、ApsaraDB for HBase 上の ali-phoenix 向けに開発中です。

同期セカンダリインデックス構築のタイムアウト

HBase 1.0 上の Phoenix 4.x:クライアントに次のタイムアウト設定を追加し、クライアントを再起動します。

<property>    
     <name>hbase.rpc.timeout</name>    
     <value>60000000</value>
</property>
<property>    
     <name>hbase.client.scanner.timeout.period</name>    
     <value>60000000</value>
</property>
<property>    
        <name>phoenix.query.timeoutMs</name>   
        <value>60000000</value>
</property>

HBase 2.0 上の Phoenix 5.x:コンソールのパラメータ設定でこれらのパラメータを変更し、HBase SQL サービスを再起動します。HBase を再起動する必要はありません。HBase SQL サービス (Phoenix) のみを再起動してください。

説明

Phoenix 5.x クラスターでは、タイムアウトパラメーターを調整するとオンラインクエリに影響します。代わりに、ファットクライアントまたは MapReduce クラスターを使用してインデックスを構築してください。詳細については、

インデックス構築

名前空間マッピングの有効化

  • 4.x で有効にする手順

    1. クライアントに次の設定を追加します。

      <property>
          <name>phoenix.schema.isNamespaceMappingEnabled</name>
          <value>true</value>
      </property>
      <property>
          <name>phoenix.schema.mapSystemTablesToNamespace</name>
          <value>true</value>
      </property>
    2. サーバー側のパラメータを有効にするには、ApsaraDB for HBase のサポートにお問い合わせください。

    3. HBase クラスターを再起動します。

  • 5.x で有効にする手順

    1. コンソールにログインします。

    2. パラメータを設定します。

      phoenix.schema.isNamespaceMappingEnabledphoenix.schema.mapSystemTablesToNamespace を true に設定します。

    3. HBase クラスターを再起動します。

    4. SQL サービスを再起動します。

    説明

    説明は異なりますが、同一のパラメータを 2 セット設定する必要があります。一方はクエリサーバー用、もう一方は HBase サーバー用で、両方を設定する必要があります。

接続プールのサポート

Phoenix 4.x バージョン 4.12.0.X は PhoenixConnectionPool.java によって接続プールをサポートします。

Phoenix 5.x はシンクライアント実装に基づいているため、PhoenixConnectionPool.java は適用されません。代わりに MyBatis などのサードパーティの接続プールを使用してください。例については、このリファレンスをご参照ください。

インデックス作成に時間がかかりすぎる場合、クライアントを切断してもよいですか?

いいえ。インデックス作成には 2 つのステップがあります。まず、サーバーがソーステーブルからインデックステーブルにデータを同期します。次に、クライアントがインデックステーブルのステータスを ACTIVE に設定するリクエストを送信します。最初のステップはクライアントがリクエストを開始した後にサーバーで実行されますが、2 番目のステップでは、アクティブなクライアント接続が必要です。

同期インデックステーブル作成時のデータ同期速度

1,000 万件のレコードのインデックス作成には、通常 5 分から 20 分かかります。実際の時間は、クラスターの設定とリソースの使用状況によって異なります。

インデックス作成タイムアウトによるクライアント切断への対処

切断後、インデックステーブルは通常 BUILDING 状態のままになります。sqlline の !table コマンドでステータスを確認してください。インデックス作成は、ステータスが ACTIVE になって初めて完了します。復旧するには、次のいずれかの方法を実行してください。

  1. alter index コマンドを使用してインデックスを再構築します。

  2. BUILDING 状態のインデックステーブルを削除し、クライアントのタイムアウト値を増やして、再度インデックスを作成します。

リレーショナルデータベースから Phoenix テーブルへのデータインポート

DataX を使用します。例については、「使用例」をご参照ください。

クエリ中に「ERROR 599(42912): Default enable Force index, please set phoenix.force.index=false to disable it....,」というエラーが発生した場合の対処方法

Phoenix は、フルテーブルスキャンを防ぐために SQL コンパイル中にインデックスの使用を強制します。このエラーは、クエリが主キーでもインデックスでもない列 (非インデックス列) でフィルタリングした場合に発生します。このようなクエリを許可するには、強制インデックスチェックを無効にします。

  • Phoenix 4.x: クライアントの hbase-site.xmlphoenix.force.indexfalse に設定してから、クライアントを再起動します。

  • Phoenix 5.x: コンソールのパラメーター設定で phoenix.force.indexfalse に設定し、HBase SQL サービスを再起動します。

Spring Boot で Druid 接続プールを使用しているときの「java.sql.SQLException: java.lang.IllegalArgumentException: Connection is null or closed」エラーへの対処

Phoenix は内部で接続をキャッシュします。Druid のような外部の接続プールでラップすると競合が発生し、一部の接続が予期せずクローズされることがあります。外部プールを削除し、Phoenix の組み込み接続キャッシュを使用してください。

Python クライアントで QueryServer に接続後、非アクティブな状態が続くと「phoenixdb.errors.InternalError: ('', None, None, None)」エラーが発生する理由

オープンソースの Python クライアントは、タイムアウト後に自動的に再接続しません。Server Load Balancer (SLB) インスタンス経由の接続がアイドル状態になりタイムアウトすると、次のリクエストは別の QueryServer ノードにルーティングされ、このエラーが発生します。

この問題を解決するには、オープンソースのクライアントを Alibaba Cloud phoenix-python クライアントに置き換えてください。このクライアントは再接続を自動的に処理します。

  1. Alibaba Cloud phoenix-python クライアントを こちらからダウンロードします。

  2. 既存の phoenix-python ドライバーがインストールされている場合は、まずそれを削除します。

    rm -rf /usr/lib/python${version}/site-packages/phoenixdb*
  3. ダウンロードしたパッケージを解凍し、phoenixdb ディレクトリに移動して、ドライバーをインストールします。

    python setup.py install

Phoenix のマルチテナンシーサポート

grantrevoke コマンドは現在サポートされていません。