Hi, I have read Nick's recent HBase connection URL email, but I wasn't subscribed yet, so I cannot properly respond to it.
In Phoenix, we have recently added support for the new registries in https://issues.apache.org/jira/browse/PHOENIX-6523. I've documented it at https://phoenix.apache.org/classpath_and_url.html Much of the new code was copied from HBase, and it does roughly what Nick has suggested. The only painful part is the clashes between the ":" as separator, and ":" used for separating hosts and ports, which requires a lot of escaping. best regards Istvan I'm copying the release notes for PHOENIX-6523 here for quick perusal: ======================================================== Add support for MasterRegistry and RPCConnectionRegistry to Phoenix. Introduces the new URL protocol variants: * jdbc:phoenix+zk: Uses Zookeeper. This is the original registry supported since the inception of HBase and Phoenix. * jdbc:phoenix+rpc: Uses RPC to connecto to the specified HBase RS/Master nodes. * jdbc:phoenix+master: Uses RPC to connect to the specified HBase Master nodes The syntax: "jdbc:phoenix" : uses the default registry and and connection from hbase-site.xml "jdbc:phoenix:param1:param2...": Protocol/Registry is determined from Hbase version and hbase-site.xml configuration, and parameters are interpreted accoring to the registry. "jdbc:phoenix+zk:hosts:ports:zknode:principal:keytab;options..." : Behaves the same as jdbc:phoenix... URL previously. Any missing parameters use defaults fom hbase-site.xml or the environment. "jdbc:phoenix+rpc:hosts:ports::principal:keytab;options..." : Uses RPCConnectionRegistry. If more than two options are specified, then the third one (he unused zkNode paramater) must always be blank. "jdbc:phoenix+master:hosts:ports::principal:keytab;options..." : Uses RPCMasterRegistry. If more than two options are specified, then the third one (he unused zkNode paramater) must always be blank. Phoenix now also supports heterogenous ports defined in HBASE-12706 <https://issues.apache.org/jira/browse/HBASE-12706> for every registry. When specifying the ports for each host separately the colon ":" character must be escaped with a backslash, i.e. "jdbc:phoenix+zk:host1\:123,host2\:345:/hbase:principal:keytab", or "jdbc:phoenix+rpc:host1\:123,host2\:345" You may need to add extra escapes to preserve the backslashes if defined in java code, etc. Note that while the phoenix+zk URL handling code has heuristics that tries to handle some omitted parameters, the Master and ConnectionRPC registry code strictly maps the URL parameters to by their ordering. Note that Phoenix now internally normalizes the URL. Whether you specify an explicit connection, or use the default "jdbc:phoenix" URL, Phoenix will internally normalize the connection, and set the properties for the internal HBase Connection objects appropriately. Also note that for most non-HA use cases an explicit connection URL should NOT be used. The preferred way to specify the connection is to have an up-to-date hbase-site.xml with both Hbase and Phoenix client properties set correctly (with other Hadoop conficguration files as needed) on the Phoenix application classpath , and using the default "jdbc:phoenix" URL. ========================================================
