phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Plamen Paskov <plamen.pas...@next-stream.com>
Subject Re: apache phoenix json api
Date Tue, 19 Apr 2016 06:47:55 GMT
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