驱动:org.apache.phoenix.jdbc.PhoenixDriver 路径:jdbc:phoenix:服务器地址:端口号 *****我们用Phoenix jdbc 去做sql query,需要安装一个Phoenix才行.url处的端口是Phoenix的hbase是一个行键查询,不是传统的sql查询。需要有一个Phoenix才能把hbase的语句转化为传统的sql查询。 常见报错1:连接报错:Test failed:detail reason:java.net.ConnectException:Connection timed out 解决方法: 数据库驱动版本和数据库版本不一致,或者数据库有限制,驱动的版本过高(合理使用匹配版本的驱动) 常见报错2:连接hbase报错: java.lang.illegalargumentException:No enum constant org.apache.calcite.avatica.remote.Driver.Serialization.TSDB 解决方法: 修改url,jdbc:phoenix:thin:url=http://192.168.1.122:8765;serialization=TSDB 将 serialization=TSDB改为serialization=PROTOBUF 测试报错 常见问题3:场景:连接Hbase可以测试成功,刷新表读不出来。确定此表是存在的,直接写SQL语句也会出现报错 解决方法: 我们产品用的phoenix去查hbase. 如果客户是直接用hbase创建的表,在我们永洪中是读取不到的。需要通过phoenix去创建表,phoenix可以理解为类似pl/sql类的工具,是hbase的查看工具. 通过phoenix创建表: 1.切换到phoenix的bin目录 cd /home/Garen/apache-phoenix-4.8.0-HBase-1.1-bin/bin 2.启动phoenix,在里面进行SQL查询和创建./sqlline.py 3.创建schema create schema celina;
4.切换schema use celina;
5.新建表 create table tesy(id integer primary key); 在phoenix上创建表成功之后,在永洪中就可以读到对应的表。 常见问题4:解决方法:Hbase上配置phoenix.schema.isNamespaceMappingEnabled属性为true吗
|