我刚刚开始在hbase上使用apachephoenix。我们有一个设置,当从集群节点中调用phoenix时,phoenix正在工作(我们能够干净地在表中crud)。现在,我们希望一个在网络之外运行的应用程序(比如一个托管移动应用程序的系统)能够查询phoenix表。为此,我们正在尝试使用phoenix查询服务器(pqs)。我已经确保端口8765可以从外部网络访问,因此,当我们使用下面的curl命令时,我们期望得到预期的结果:
[root@externalsystem ~]#curl-xpost-h'请求:{“request”:“prepareandexecute”,“connectionid”:“000000-0000-0000-00000000”,“statementid”:12345,“sql”:“select*from questtweets1”,“maxrowcount”:1}'http://here.comes.external.ip:8765/
但我们得到的回应是:
{“response”:“executeresults”,“missingstatement”:true,“rpcmetadata”:{“response”:“rpcmetadata”,“serveraddress”:“viper.quest”。com:8765“}”,结果:null}
我们使用的是hdp2.3.4.7-4以及hbase和pqs的对齐版本。
很明显,我将sql作为请求中的键之一传递。有人能帮我明白我做错了什么吗?此外,由于本文的目标是提供一种以高并发性访问phoenix表的方法(moble应用程序可以要求这种方法),那么pqs是一个不错的解决方案还是有更好的方法来访问phoenix表?由于我是一个新手在使用hbase和Phoenix城,请让我知道如果有任何其他细节要求。
2条答案
按热度按时间57hvy0tb1#
找出问题的答案,并在这里提供给任何其他新手的帮助。我应该更了解jdbc的工作原理。以下是让pqs为您工作的详细步骤:
步骤1:curl-xpost-h'请求:{“request”:“openconnection”,“connectionid”:“000000-0000-0000-00000000”}'url
示例响应:{“response”:“openconnection”,“rpcmetadata”:{“response”:“rpcmetadata”,“serveraddress”:“viper.quest”。com:8765"}}
步骤2:curl-xpost-h'请求:{“request”:“createstatement”,“connectionid”:“000000-0000-0000-00000000”}'url
示例响应:{“response”:“createstatement”,“connectionid”:“000000-0000-0000-00000000”,“statementid”:1,“rpcmetadata”:{“response”:“rpcmetadata”,“serveraddress”:“viper.quest”。com:8765"}}
步骤3:curl-xpost-h'请求:{“request”:“prepareandexecute”,“connectionid”:“000000-0000-0000-00000000”,“statementid”:1,“sql”:“select*from questtweets1”,“maxrowcount”:-1}'url
示例响应:包含数据的json
步骤4:curl-xpost-h'请求:{“request”:“closestatement”,“connectionid”:“000000-0000-0000-00000000”,“statementid”:1}'url
示例响应:{“response”:“closestatement”,“rpcmetadata”:{“response”:“rpcmetadata”,“serveraddress”:“viper.quest”。com:8765"}}
步骤5:curl-xpost-h'请求:{“request”:“closeconnection”,“connectionid”:“000000-0000-0000-00000000”}'url
示例响应:{“response”:“closeconnection”,“rpcmetadata”:{“response”:“rpcmetadata”,“serveraddress”:“viper.quest”。com:8765"}}
其中url的形式为-http://external.ip.of.pqs:8765/
希望这有帮助。
5f0d552i2#
您可以使用jdbc连接到phoenix,就像使用mysql一样---http://phoenix.apache.org/index.html