Phoenix에서 create schema을 실행하려면



phoenix/bin/hdfs-site.xml과 hbase/conf/hdfs-site.xml에 다음 속성을 추가해야 한다.




<property>

<name>phoenix.schema.isNamespaceMappingEnabled</name> 

<value>true</value> 

</property> 




만약 설정되어 있지 않도록 sqline,py에서 다음 에러가 발생한다.


Cannot create schema because config phoenix.schema.isNamespaceMappingEnabled for enabling name space mapping isn't enabled \


Posted by '김용환'
,

[hbase-phoenix] jdbc driver

hadoop 2018. 11. 1. 19:55


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을 설정해야 한다. 

Posted by '김용환'
,