无法使用 python phoenixdb 库连接到 phoenix
can not connect to phoenix using python phoenixdb library
我有与 HBase 集成的 Phoenix。
我正在尝试使用 pythondb 库从 python 代码访问 phoenix,并且我已经使用
启动了 QueryServer
bin/queryserver.py start
但是在连接语句之后我得到以下错误:
database_url = 'http://localhost:8765/'
conn = phoenixdb.connect(database_url, autocommit=True)
内部错误:('Cannot find parser for'、None、None、None)
这是日志中的错误:
2016-08-10 14:24:07,987 WARN org.eclipse.jetty.server.HttpChannel: /
java.lang.IllegalArgumentException: Cannot find parser for at
org.apache.calcite.avatica.remote.ProtobufTranslationImpl.getParserForRequest(ProtobufTranslationImpl.java:182)
at
org.apache.calcite.avatica.remote.ProtobufTranslationImpl.parseRequest(ProtobufTranslationImpl.java:239)
at
org.apache.calcite.avatica.remote.ProtobufHandler.decode(ProtobufHandler.java:42)
at
org.apache.calcite.avatica.remote.ProtobufHandler.decode(ProtobufHandler.java:28)
at
org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:95)
at
org.apache.calcite.avatica.remote.ProtobufHandler.apply(ProtobufHandler.java:38)
at
org.apache.calcite.avatica.server.AvaticaProtobufHandler.handle(AvaticaProtobufHandler.java:68)
at
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:497) at
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:245)
at
org.eclipse.jetty.io.AbstractConnection.run(AbstractConnection.java:540)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)
问题是因为我使用的是 Phoenix 4.7,即使我已经使用
启动了服务器
./bin/queryserver.py start -Dphoenix.queryserver.serialization=JSON
删除 Phoenix 4.7 并安装 4.6 后,python 的连接可以成功建立。
我希望有人会使用这个技巧:)
谢谢!
我有与 HBase 集成的 Phoenix。 我正在尝试使用 pythondb 库从 python 代码访问 phoenix,并且我已经使用
启动了 QueryServerbin/queryserver.py start
但是在连接语句之后我得到以下错误:
database_url = 'http://localhost:8765/'
conn = phoenixdb.connect(database_url, autocommit=True)
内部错误:('Cannot find parser for'、None、None、None)
这是日志中的错误:
2016-08-10 14:24:07,987 WARN org.eclipse.jetty.server.HttpChannel: / java.lang.IllegalArgumentException: Cannot find parser for at org.apache.calcite.avatica.remote.ProtobufTranslationImpl.getParserForRequest(ProtobufTranslationImpl.java:182) at org.apache.calcite.avatica.remote.ProtobufTranslationImpl.parseRequest(ProtobufTranslationImpl.java:239) at org.apache.calcite.avatica.remote.ProtobufHandler.decode(ProtobufHandler.java:42) at org.apache.calcite.avatica.remote.ProtobufHandler.decode(ProtobufHandler.java:28) at org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:95) at org.apache.calcite.avatica.remote.ProtobufHandler.apply(ProtobufHandler.java:38) at org.apache.calcite.avatica.server.AvaticaProtobufHandler.handle(AvaticaProtobufHandler.java:68) at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:497) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:245) at org.eclipse.jetty.io.AbstractConnection.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Thread.java:745)
问题是因为我使用的是 Phoenix 4.7,即使我已经使用
启动了服务器./bin/queryserver.py start -Dphoenix.queryserver.serialization=JSON
删除 Phoenix 4.7 并安装 4.6 后,python 的连接可以成功建立。
我希望有人会使用这个技巧:) 谢谢!