phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From F21 <f21.gro...@gmail.com>
Subject Re: apache phoenix json api
Date Tue, 19 Apr 2016 06:50:02 GMT
Can you show the requests you are currently sending? This is what a 
PrepareAndExecute request should look like:
https://calcite.apache.org/docs/avatica_json_reference.html#prepareandexecuterequest

On 19/04/2016 4:47 PM, Plamen Paskov wrote:
> Josh,
> I removed the quotation but the result is still the same. I still 
> cannot see the new data added neither with prepareAndExecute or 
> prepareAndExecuteBatch
>
> On 17.04.2016 22:45, Josh Elser wrote:
>> statementId is an integer, not a string. Remove the quotation marks 
>> around the value "2".
>>
>> Plamen Paskov wrote:
>>> Now another error appears for prepare and execute batch request:
>>>
>>> <html>
>>> <head>
>>> <meta http-equiv="Content-Type" 
>>> content="text/html;charset=ISO-8859-1"/>
>>> <title>Error 500 </title>
>>> </head>
>>> <body>
>>> <h2>HTTP ERROR: 500</h2>
>>> <p>Problem accessing /. Reason:
>>>
>>> <pre> com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:
>>> Unrecognized field "statementId" (class
>>> org.apache.calcite.avatica.remote.Service$SchemasRequest), not 
>>> marked as
>>> ignorable (3 known properties: , "connectionId", "catalog",
>>> "schemaPattern"])
>>> at [Source: java.io.StringReader@3b5c02a5; line: 6, column: 2] (through
>>> reference chain:
>>> org.apache.calcite.avatica.remote.SchemasRequest["statementId"])</pre>
>>> </p>
>>> <hr />
>>> <i>
>>> <small>Powered by Jetty://</small>
>>> </i>
>>> </body>
>>> </html>
>>>
>>> My request looks like:
>>> {
>>> "request": "prepareAndExecuteBatch",
>>> "connectionId": "3",
>>> "statementId": "2",
>>> "sqlCommands": [ "UPSERT INTO us_population VALUES('C1','City
>>> 1',100000)", "UPSERT INTO us_population VALUES('C2','City 
>>> 2',1000000)" ]
>>> }
>>>
>>> Any help will be appreciated!
>>> Thanks
>>>
>>> On 14.04.2016 14:58, Plamen Paskov wrote:
>>>> Ah i found the error. It should be "sqlCommands": instead of
>>>> "sqlCommands",
>>>> The documentation syntax is wrong for this request type:
>>>> http://calcite.apache.org/avatica/docs/json_reference.html#prepareandexecutebatchrequest

>>>>
>>>>
>>>>
>>>> On 14.04.2016 11:09, Plamen Paskov wrote:
>>>>> @Josh: thanks for your answer.
>>>>>
>>>>> Folks,
>>>>> I'm trying to prepare and execute batch request with no luck.
>>>>> These are the requests i send:
>>>>>
>>>>> {
>>>>> "request": "openConnection",
>>>>> "connectionId": "2"
>>>>> }
>>>>>
>>>>> {
>>>>> "request": "createStatement",
>>>>> "connectionId": "2"
>>>>> }
>>>>>
>>>>> {
>>>>> "request": "prepareAndExecuteBatch",
>>>>> "connectionId": "2",
>>>>> "statementId": 1,
>>>>> "sqlCommands", [ "UPSERT INTO us_population(STATE,CITY,POPULATION)
>>>>> VALUES('C1','City 1',100000)", "UPSERT INTO
>>>>> us_population(STATE,CITY,POPULATION) VALUES('C2','City 2',1000000)" ]
>>>>> }
>>>>>
>>>>> And this is the response i receive:
>>>>>
>>>>> <html>
>>>>> <head>
>>>>> <meta http-equiv="Content-Type" 
>>>>> content="text/html;charset=ISO-8859-1"/>
>>>>> <title>Error 500 </title>
>>>>> </head>
>>>>> <body>
>>>>> <h2>HTTP ERROR: 500</h2>
>>>>> <p>Problem accessing /. Reason:
>>>>>
>>>>> <pre> com.fasterxml.jackson.core.JsonParseException: Unexpected
>>>>> character (',' (code 44)): was expecting a colon to separate field
>>>>> name and value
>>>>> at [Source: java.io.StringReader@41709697; line: 5, column: 17]</pre>
>>>>> </p>
>>>>> <hr />
>>>>> <i>
>>>>> <small>Powered by Jetty://</small>
>>>>> </i>
>>>>> </body>
>>>>> </html>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 13.04.2016 19:27, Josh Elser wrote:
>>>>>> For reference materials: definitely check out
>>>>>> https://calcite.apache.org/avatica/
>>>>>>
>>>>>> While JSON is easy to get started with, there are zero guarantees
on
>>>>>> compatibility between versions. If you use protobuf, we should be
>>>>>> able to hide all schema drift from you as a client (e.g.
>>>>>> applications you write against Phoenix 4.7 should continue to work
>>>>>> against 4.8, 4.9, etc).
>>>>>>
>>>>>> Good luck with the PHP client -- feel free to reach out if you have
>>>>>> more issues. Let us know you have something to shared. I'm sure
>>>>>> others would also find it very useful.
>>>>>>
>>>>>> F21 wrote:
>>>>>>> I am currently building a golang client as well, so I've been

>>>>>>> looking
>>>>>>> the api over the last few weeks.
>>>>>>>
>>>>>>> I am not sure about the decision to have to create a statement

>>>>>>> first,
>>>>>>> but in terms of go, it fits the sql package very well, where
>>>>>>> statements
>>>>>>> are opened and closed.
>>>>>>>
>>>>>>> I don't think there are any books (as of yet), but the 
>>>>>>> references and
>>>>>>> digging through the code should be quite useful. I also recommend
>>>>>>> checking out the avatica project (which is a sub project of 
>>>>>>> calcite)
>>>>>>> which is used to power the query server.
>>>>>>>
>>>>>>> Also, the query server uses protobufs by default now, so it would
>>>>>>> probably be better to use that rather than the JSON api.
>>>>>>>
>>>>>>> On 13/04/2016 10:21 PM, Plamen Paskov wrote:
>>>>>>>> thanks for your quick and accurate answer ! it's working
now!
>>>>>>>> can you give me a brief explanation of why is it to mantain
the 
>>>>>>>> state
>>>>>>>> via the json api so i can better understand how to create
a php
>>>>>>>> wrapper library. if there are some books or references where
i can
>>>>>>>> read more about apache phoenix will be very helpful.
>>>>>>>> thanks
>>>>>>>>
>>>>>>>> On 13.04.2016 13:29, F21 wrote:
>>>>>>>>> Your PrepareAndExecute request is missing a statementId:
>>>>>>>>> https://calcite.apache.org/docs/avatica_json_reference.html#prepareandexecuterequest

>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Before calling PrepareAndExecute, you need to send a

>>>>>>>>> CreateStatement
>>>>>>>>> request to the server so that it can give you a statementId.

>>>>>>>>> Then,
>>>>>>>>> use that statementId in your PrepareAndExecute request
and all
>>>>>>>>> should
>>>>>>>>> be fine :)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 13/04/2016 8:24 PM, Plamen Paskov wrote:
>>>>>>>>>> Hi guys,
>>>>>>>>>> I just setup apache phoenix 4.7 and set the serialization
to 
>>>>>>>>>> JSON.
>>>>>>>>>> Now i'm trying to run a select statement but what
i receive is
>>>>>>>>>> this:
>>>>>>>>>>
>>>>>>>>>> {
>>>>>>>>>> "response": "executeResults",
>>>>>>>>>> "missingStatement": true,
>>>>>>>>>> "rpcMetadata": {
>>>>>>>>>> "response": "rpcMetadata",
>>>>>>>>>> "serverAddress": "ip-172-31-27-198:8765"
>>>>>>>>>> },
>>>>>>>>>> "results": null
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> My request looks like this:
>>>>>>>>>>
>>>>>>>>>> curl -XPOST -H 'request: {"request":"prepareAndExecute",
>>>>>>>>>> "connectionId":"1", "sql":"select * from us_population",
>>>>>>>>>> "maxRowCount":-1}' http://52.31.63.96:8765/
>>>>>>>>>>
>>>>>>>>>> Running the select above from the command line is
fine and it
>>>>>>>>>> returns 2 rows :
>>>>>>>>>>
>>>>>>>>>> sqlline version 1.1.8
>>>>>>>>>> 0: jdbc:phoenix:localhost> select * from us_population;
>>>>>>>>>> +-------+------------------------------------------+------------------------------------------+

>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> | STATE | CITY | POPULATION |
>>>>>>>>>> +-------+------------------------------------------+------------------------------------------+

>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> | CA | Los Angeles | 3844829 |
>>>>>>>>>> | NY | New York | 8143197 |
>>>>>>>>>> +-------+------------------------------------------+------------------------------------------+

>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2 rows selected (0.087 seconds)
>>>>>>>>>>
>>>>>>>>>> Can you give me some direction what i'm doing wrong
as i'm 
>>>>>>>>>> not java
>>>>>>>>>> dev and it's not possible for me to read and understand
the 
>>>>>>>>>> source
>>>>>>>>>> code.
>>>>>>>>>>
>>>>>>>>>> Thanks in advance !
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>
>


Mime
View raw message