apache phoenix의 qps에 jdbc를 연동하려면 다음 코드를 참조해 개발할 수 있다. 


https://www.javaworld.com/article/3030214/big-data/open-source-java-projects-apache-phoenix.html?page=2



내가 테스트한 버전은 다음과 같다.


<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>4.11.0-HBase-1.2</version>
</dependency>


phoenix 상황에 따라서는 설정 값을 주어야 하는데. 

sqlline.py를 실행할 때 hbase-site.xml를 설정하는데. 이에 맞게 jdbc의 속성에도 추가하는 것이 좋다. 



Properties props = new Properties();
props.setProperty("phoenix.schema.isNamespaceMappingEnabled", "true");
props.setProperty("phoenix.functions.allowUserDefinedFunctions", "true");
connection = DriverManager.getConnection("jdbc:phoenix:...", props);


만약 설정을 모른다 해도 어짜치 에러가 난다. pheonix를 jdbc로 연동할 때 에러가 발생하면 https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java를 참조하는 것이 좋다.





아래 문제는 phoenix.schema.isNamespaceMappingEnabled를 추가해서. 해결했다.


java.sql.SQLException: ERROR 726 (43M10):  Inconsistent namespace mapping properites.. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled





아래 문제는 phoenix.functions.allowUserDefinedFunctions를 추가해서 해결했다. 


org.apache.phoenix.schema.FunctionNotFoundException: ERROR 6001 (42F01): Function undefined. functionName=[CONCAT]




Posted by 김용환 '김용환'