Apache Phoenix driver를 사용할 때 유의해야 할 부분이 있다.
zookeeper를 이용한 분산 hbase 위에 phoenix를 사용할 때와
standalone의 hbase 위에 phoenix를 사용할 때의 jdbc url은 다르다.
(https://phoenix.apache.org/faq.html)
1. Thick driver
zookeeper를 이용한 분산 hbase 위에 phoenix를 사용할 때를 thick driver라 한다.
스키마는 다음과 같고.. lib는 phoenix-4.14.0-Hbase-1.4-client.jar를 사용한다.
jdbc:phoenix:[comma-separated ZooKeeper Quorum [:port [:hbase root znode [:kerberos_principal [:path to kerberos keytab] ] ] ]
예)
jdbc:phoenix:localhost
jdbc:phoenix:zookeeper1.domain,zookeeper2.domain,zookeeper3.domain:2181:/hbase-1:phoenix@EXAMPLE.COM:/etc/security/keytabs/phoenix.keytab
2. Thin driver
standalone의 hbase 위에 phoenix를 사용할 때의 jdbc url은 thin driver라 한다.
스키마는 다음과 같고.. lib는 phoenix-4.14.0-Hbase-1.4-thin-client.jar를 사용한다.
(라이브러리 파일이 다르고..특별히 Dirver Class는 org.apache.phoenix.querserver.client.Driver임을 잘 기억해야 한다.)
jdbc:phoenix:thin:[key=value[;key=value...]]
예)
jdbc:phoenix:thin:url=http://localhost:8765
jdbc:phoenix:thin:url=http://queryserver.domain:8765;serialization=PROTOBUF;authentication=SPENGO;principal=phoenix@EXAMPLE.COM;keytab=/etc/security/keytabs/phoenix.keytab
주의할 점은 기본 phoenix query server를 실행했다면 serialization=PROTOBUF을 넣어줘야 한다!!
json을 사용하고 싶다면. hbase-site.xml에 phoenix.queryserver.serialization=JSON을 설정해야 한다.