全部产品
Search
文档中心

ApsaraDB for HBase:FAQ HBase SQL(Phoenix)

更新时间:Jun 29, 2025

Dokumen ini menjawab pertanyaan umum terkait penggunaan HBase SQL (Phoenix).

Paket JAR apa saja yang telah dirilis di versi terbaru ali-phoenix di repositori pusat Maven?

  • Dependensi ali-phoenix 4.x:
    GroupIdArtifactIdVersi Terbaru
    com.aliyun.phoenixali-phoenix4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-hive4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-spark4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-pherf4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-queryserver4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-queryserver-client4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-pig4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-flume4.12.0-AliHBase-1.1-0.9
    com.aliyun.phoenixali-phoenix-core4.12.0-AliHBase-1.1-0.9
  • Dependensi ali-phoenix 5.x:
    GroupIdArtifactIdVersi Terbaru
    com.aliyun.phoenixali-phoenix-shaded-thin-client5.2.5-HBase-2.x
    com.aliyun.phoenixali-phoenix-shaded-thin-client5.2.5-HBase-2.x
    Catatan Disarankan menggunakan klien berbayangan untuk menghindari masalah ketidakcocokan antara klien dan dependensi pihak ketiga.

Apa format string koneksi JDBC ali-phoenix?

Jika Query Server diaktifkan, gunakan klien tipis. Jika tidak, gunakan klien tebal. ali-phoenix tidak mendukung penggunaan keytab untuk mengakses ApsaraDB for HBase, sehingga string koneksi JDBC ali-phoenix berbeda dari Apache Phoenix.
  • Driver klien tebal
    Connection string syntax
      jdbc:phoenix:[[ZK_HOST1:port, ZK_HOST2:port, ZK_HOST3:port | ZooKeeper Quorum dipisahkan koma [:port] [:hbase root znode] ]
    Connection string example
    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
  • Driver klien tipis
    Connection string syntax
    jdbc:phoenix:thin:[key=value[;key=value...]]
    Connection string example
    jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF

Apakah ApsaraDB for HBase mendukung Query Server?

  • ApsaraDB for HBase 1.x menggunakan klien tebal Phoenix 4.x. Anda perlu membuat layanan Query Server secara manual.
  • ApsaraDB for HBase 2.0 mendukung layanan HBase SQL. Secara default, Query Server diaktifkan untuk ApsaraDB for HBase 2.0.

Apakah aplikasi web dapat dilacak?

Tidak, ali-phoenix di ApsaraDB for HBase belum mendukung pelacakan aplikasi web. Fitur ini akan segera tersedia.

Apa yang harus saya lakukan jika indeks sekunder habis waktu saat saya membuat tugas sinkronisasi?

Untuk Phoenix 4.x di ApsaraDB for HBase 1.0, tambahkan konfigurasi berikut ke klien Anda dan mulai ulang klien:
<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>
Untuk Phoenix 5.x di ApsaraDB for HBase 2.0, modifikasi parameter tersebut di konsol ApsaraDB for HBase dan mulai ulang layanan HBase SQL. Perhatikan bahwa Anda tidak perlu memulai ulang HBase.
Catatan Jika menyesuaikan parameter timeout dalam cluster Phoenix 5.x, akses online akan terpengaruh. Disarankan menggunakan klien tebal atau kluster MapReduce untuk membuat indeks. Untuk informasi lebih lanjut, lihat Praktik terbaik untuk membuat indeks di ApsaraDB Phoenix.

Bagaimana cara mengaktifkan pemetaan namespace?

  • Aktifkan pemetaan namespace untuk ali-phoenix 4.x.
    1. Tambahkan konfigurasi berikut ke klien:
      <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>
    2. Hubungi grup Q&A ApsaraDB for HBase untuk mengaktifkan fitur ini di server HBase.
    3. Mulai ulang kluster HBase.
  • Aktifkan pemetaan namespace untuk ali-phoenix 5.x.
    1. Masuk ke konsol ApsaraDB for HBase.
    2. Konfigurasikan parameter.

      Atur parameter phoenix.schema.isNamespaceMappingEnabled dan phoenix.schema.mapSystemTablesToNamespace menjadi true.

    3. Mulai ulang kluster HBase.
    4. Mulai ulang layanan HBase SQL.
    Catatan Anda harus mengonfigurasi parameter ini pada query server dan HBase server. Deskripsi parameter pada kedua server tersebut berbeda.

Apakah kolam koneksi didukung?

Kolam koneksi didukung oleh Phoenix 4.12.0.X. Untuk informasi lebih lanjut, lihat PhoenixConnectionPool.java.

Phoenix 5.x menggunakan klien tipis, sehingga Anda tidak dapat menggunakan PhoenixConnectionPool.java untuk membuat kolam koneksi. Disarankan menggunakan kolam koneksi pihak ketiga seperti MyBatis. Untuk informasi lebih lanjut, lihat Demo kolam koneksi.

Apakah saya dapat memutuskan klien saya jika terlalu lama untuk membuat indeks?

Tidak, jangan memutuskan klien Anda. Proses pembuatan indeks terdiri dari dua langkah. Pada Langkah 1, server menyinkronkan data dari tabel sumber ke tabel indeks. Pada Langkah 2, klien mengirim permintaan untuk mengubah status tabel indeks menjadi aktif. Biasanya, pada Langkah 1, klien mengirim permintaan ke server, dan server memprosesnya.

Berapa lama waktu yang dibutuhkan untuk membuat tabel indeks dan menyinkronkan data indeks?

Secara umum, diperlukan waktu 5 hingga 20 menit untuk membuat indeks pada 10 juta baris data. Durasi bergantung pada spesifikasi kluster dan jumlah sumber daya komputasi.

Apa yang harus saya lakukan jika terlalu lama untuk membuat indeks dan koneksi klien saya ditutup secara otomatis?

Tabel indeks hanya dibuat setelah statusnya berubah dari building menjadi active. Jalankan perintah !table di SQLLine untuk memeriksa status tabel indeks. Untuk menyelesaikan masalah ini, coba salah satu solusi berikut:
  1. Eksekusi pernyataan ALTER INDEX untuk membangun ulang indeks.
  2. Hapus tabel indeks dalam status building, atur waktu timeout koneksi klien ke nilai yang lebih besar, dan bangun ulang indeks.

Bagaimana cara mengimpor data dari database relasional ke tabel Phoenix di ApsaraDB for HBase?

Gunakan DataX atau CDP. Untuk informasi lebih lanjut tentang DataX, kunjungi https://github.com/alibaba/DataX.

Apa yang harus saya lakukan jika pesan kesalahan ERROR 599(42912): Default enable Force index, please set phoenix.force.index=false to disable it...., dikembalikan saat saya meminta data?

Sistem secara otomatis memeriksa apakah kolom kunci utama atau kolom indeks digunakan sebagai kondisi query saat mengompilasi pernyataan SQL. Ini membantu menghindari pemindaian tabel penuh. Jika tidak ada kolom kunci utama atau indeks yang ditentukan sebagai kondisi query, kesalahan ini muncul. Jika Anda perlu menggunakan kolom selain kunci utama atau kolom indeks sebagai kondisi query, gunakan metode berikut untuk menyelesaikan masalah ini. Untuk Phoenix 4.x, buka file konfigurasi klien hbase-site.xml dan atur phoenix.force.index menjadi false. Kemudian, mulai ulang klien. Untuk Phoenix 5.x, atur phoenix.force.index menjadi false di konsol ApsaraDB for HBase, dan mulai ulang layanan HBase SQL.

Apa yang harus saya lakukan jika pesan kesalahan java.sql.SQLException: java.lang.IllegalArgumentException: Connection is null or closed dikembalikan saat saya menggunakan kolam koneksi Druid di Spring Boot?

Phoenix menyimpan cache informasi koneksi. Jika Anda menambahkan koneksi ini ke kolam koneksi, koneksi tidak dihapus dari kolam saat ditutup. Akibatnya, pesan kesalahan ini muncul saat sistem ingin menggunakan kembali koneksi yang telah ditutup. Oleh karena itu, disarankan agar Anda tidak menggunakan kolam koneksi Druid.

Saat saya menggunakan koneksi idle yang dibuat antara klien Python dan query server untuk meminta data, apa yang harus saya lakukan jika pesan kesalahan berikut dikembalikan:phoenixdb.errors.InternalError: ('', None, None, None)

Klien Python open source tidak mendukung pembuatan ulang koneksi yang telah habis waktu. Jika Anda mengirim permintaan ke query server melalui koneksi SLB yang telah habis waktu, pesan kesalahan ini muncul.
  1. Unduh klien phoenix-python Alibaba Cloud.
  2. Jika Anda sudah menginstal driver phoenix-python, jalankan perintah berikut untuk menghapusnya:
    rm -rf /usr/lib/python${version}/site-packages/phoenixdb*
  3. Ekstrak paket yang diunduh, navigasikan ke direktori phoenixdb, dan jalankan perintah berikut untuk menginstal driver:
    python setup.py install

Apakah Phoenix mendukung multitenancy?

Tidak, Phoenix tidak mendukung multitenancy. Perintah seperti grant dan revoke tidak didukung.