Apache Phoenix Query Server

Clone this repo:


  1. 1e78243 PHOENIX-5879 Fix recently introduced python 2.7 incompatibilities and flake8 warning by Istvan Toth · 5 weeks ago master
  2. dd34d08 PHOENIX-5873 Fix loadbalancer packaging problem for queryserver scripts by Guanghao Zhang · 7 weeks ago
  3. 992d555 PHOENIX-5844 Feature parity for the python client (part2: transaction and array support) by Istvan Toth · 6 weeks ago
  4. ea5c806 PHOENIX-5827 Add a maven repo to PQS and optionally bundle phoenix-client by Josh Elser · 8 weeks ago
  5. ac320cf PHOENIX-5844 Feature parity for the python client (addendum: fix test suite) by Istvan Toth · 6 weeks ago


Apache Phoenix enables OLTP and operational analytics in Hadoop for low latency applications. Visit the Apache Phoenix website here. This is the repo for the Phoenix Query Server (PQS).

Copyright ©2020 Apache Software Foundation. All Rights Reserved.


The Phoenix Query Server is an JDBC over HTTP abstraction. The Phoenix Query Server proxies the standard Phoenix JDBC driver and provides a backwards-compatible wire protocol to invoke that JDBC driver. This is all done via the Apache Avatica project (sub-project of Apache Calcite).

The reference client implementation for PQS is a “thin” JDBC driver which can communicate with PQS. There are drivers in other languages which exist in varying levels of maturity including Python, Golang, and .NET.


This repository will build a tarball which is capable of running the Phoenix Query Server.

By default, this tarball does not contain a Phoenix client jar as it is meant to be agnostic of Phoenix version (one PQS release can be used against any Phoenix version). Today, PQS builds against the Phoenix 4.15.0-HBase-1.4 release.

$ mvn package

Bundling a Phoenix Client

To build a release of PQS which packages a specific version of Phoenix, enable the package-phoenix-client profile and specify properties to indicate a specific Phoenix version.

By default, PQS will package the same version of Phoenix used for build/test. This version is controlled by the system property phoenix.version system property. Depending on the version of Phoenix, you may also be required to use the phoenix.hbase.classifier system property to identify the correct version of Phoenix built against the version of HBase of your choosing.

$ mvn package -Dpackage.phoenix.client -Dphoenix.version=5.1.0-SNAPSHOT -Dphoenix.hbase.classifier=hbase-2.2