Phoenix Query Server未返回任何结果

时间:2016-09-10 10:37:31

标签: hbase phoenix

我刚开始在HBase上使用Apache Phoenix。我们有一个设置,当Phoenix从群集节点中调用时,它正在工作(我们能够干净地在表中进行CRUD)。现在,我们希望在网络外运行的应用程序(比如托管移动应用程序的系统)能够查询Phoenix表。为此,我们尝试的其中一个选项是使用Phoenix Query Server(PQS)。我确保可以从外部网络访问端口8765,因此,当我们使用下面的CURL命令时,我们期望得到所需的结果:

  

[root @ externalsystem~] #curl -XPOST -H' request:{" request":" prepareAndExecute"," connectionId":& #34; 000000-0000-0000-00000000"," statementId":12345," sql":" SELECT * FROM QUESTTWEETS1"," maxRowCount":1}' http://here.comes.external.ip:8765/

但我们得到的回应是:

  

{"响应":" executeResults"" missingStatement":真," rpcMetadata" {"响应&#34 ;:" rpcMetadata"" serverAddress":" viper.quest.com:8765"}"结果":空}

我们正在使用HDP 2.3.4.7-4以及HBase和PQS的对齐版本。

很明显,我将SQL作为请求中的一个键传递。有人可以帮我理解我在这里做错了什么吗?此外,由于这样做的目的是提供一种以高并发性(moble应用程序可以要求)访问Phoenix表的方法,PQS是一个不错的解决方案还是有更好的选项来访问Phoenix表?由于我是使用HBase和Phoenix的新手,请告诉我是否还需要其他详细信息。

2 个答案:

答案 0 :(得分:2)

找到问题的答案,并在此处提供任何其他新人的帮助。我应该更多地了解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”}}

网址的格式为http://external.ip.of.pqs:8765/

希望这有帮助。

答案 1 :(得分:0)

你可以使用jdbc连接到phoenix和mysql一样.--- http://phoenix.apache.org/index.html