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.

========================================================

Reply via email to