永洪社区

标题: 连接hbase及常见报错 [打印本页]

作者: 寻找新技能    时间: 2021-3-31 17:41
标题: 连接hbase及常见报错

驱动: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






欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4