我刚开始在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的新手,请告诉我是否还需要其他详细信息。
答案 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