Hello Francis and Josh, Really appreciate the quick responses. We were able to resolve the issue.
Regards, Puneeth -----Original Message----- From: Josh Elser [mailto:josh.el...@gmail.com] Sent: 12 September 2016 19:48 To: user@phoenix.apache.org Subject: Re: FW: Phoenix Query Server not returning any results Puneeth -- One extra thing to add to Francis' great explanation; the response message told you what you did wrong: "missingStatement":true This is telling you that the server does not have a statement with the ID 12345 as you provided. F21 wrote: > Hey, > > You mentioned that you sent a PrepareAndExecuteRequest. However, to do > that, you would need to first: > 1. Open a connection: > https://calcite.apache.org/docs/avatica_json_reference.html#openconnectionre quest > 2. Create a statement: > https://calcite.apache.org/docs/avatica_json_reference.html#createstatementr equest > 3. Call your PrepareAndExecute request: > https://calcite.apache.org/docs/avatica_json_reference.html#prepareandexecut erequest > > The phoenix query service uses Avatica (part of Apache Calcite), so you > can find all the documentation for talking with the query server here: > https://calcite.apache.org/docs/avatica_json_reference.html > > I do recommend using protobufs over JSON as protobufs are now the > default serialization method. > > In terms of making your clients talk to the query server directly, I > don't think that would be the best idea except in the case of some > exceptions. While the query server supports authentication and > authorization, I don't think it would be granular enough for most apps. > Usually, you would need to have some business/domain layer and use > phoenix as the storage/data access layer. However, it depends on your > use-case :) > > Cheers, > Francis > > On 12/09/2016 9:02 PM, Puneeth Prasad wrote: >> >> Hello, >> >> Wehave just started using Apache Phoenix on HBase. We have a setup >> where Phoenix is working (We are able to CRUD in tables cleanly). Now, >> we want an application running outside the network (say a system >> hosting a mobile app) to be able to query Phoenix table. For that, one >> of the options we are trying is using Phoenix Query Server (PQS). I >> have ensured that the port 8765 is accessible from outside network and >> so, when we use below CURL command, we expect the desired result: >> >> [root@externalsystem ~]# curl -XPOST -H >> 'request:{"request":"prepareAndExecute","connectionId":"000000-0000-0000-000 00000","statementId":12345,"sql": >> "SELECT * FROM >> QUESTTWEETS1","maxRowCount":1}'http://here.comes.external.ip:8765/ >> >> But the response which we get is: >> >> {"response":"executeResults","missingStatement":true,"rpcMetadata":{"respons e":"rpcMetadata","serverAddress":"viper.quest.com:8765 >> <http://viper.quest.com:8765/>"},"results":null} >> >> We are using HDP 2.3.4.7-4 and aligned versions of HBase and PQS. >> >> Very clearly, I am passing the SQL as one of the keys in the request. >> Can somebody please help me understand what am I doing wrong here? >> Additionally, since the goal of this is to provide a way to access >> Phoenix tables at high concurrency (which moble apps can demand), is >> PQS a decent solution or there are any better options to access >> Phoenix tables? Since I am a newbie in using HBase and Phoenix, please >> let me know if there are any other details required. >> >> Best Regards >> >> Puneeth >> >