hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Purtell (JIRA)" <j...@apache.org>
Subject [jira] Created: (HBASE-2475) [stargate] Required ordering of JSON name/value pairs when performing Insert/Update
Date Tue, 20 Apr 2010 22:09:50 GMT
[stargate] Required ordering of JSON name/value pairs when performing Insert/Update
-----------------------------------------------------------------------------------

                 Key: HBASE-2475
                 URL: https://issues.apache.org/jira/browse/HBASE-2475
             Project: Hadoop HBase
          Issue Type: Bug
            Reporter: Andrew Purtell
            Assignee: Andrew Purtell
             Fix For: 0.20.5, 0.21.0


>From Tyler Coffin up on hbase-user@

{quote}
I am using the Stargate REST interface to HBase for inserting data. When using JSON to transmit
the query content, I have found that specific ordering of key/value pairs within the JSON
string is required in order for the query to succeed (otherwise a response of 'HTTP/1.1 500
Row key is invalid' error is thrown if "key" and "Cell" are reversed).

Example:
This string receives the above error:

{noformat}
{"Row":[{"Cell":[{"column":"bWVzc2FnZTptc2c=","$":"Zm9vYmFy"}],"key":"MTIzNAo="}]}
{noformat}

This is the valid equivalent string:

{noformat}
{"Row":[{"key":"MTIzNAo=","Cell":[{"column":"bWVzc2FnZTptc2c=","$":"Zm9vYmFy"}]}]}
{noformat}

As you can see the only difference between these two instances is that the "key" and "Cell"
name/value pairs have their order reversed.

In the equivalent XML notation, the ordering is specifically required per the schema. However
with JSON Objects (i.e. name/value pairs) order is not required (JSON Arrays are ordered,
but not Objects). Some JSON libraries will preserve ordering of Objects but not all  which
is how I discovered this problem in the first place because I was using the Perl JSON library
which does not guarantee order). 
I'm unsure if this is a bug in the REST implementation or an inconvenient ambiguity in the
JSON specification. Regardless I thought I'd share this discovery with the community for feedback
(or at the very least to document this for users' future reference).

For reference this is the table schema for the above query:

{noformat}
{NAME => 'reftrack', FAMILIES => [{NAME => 'message', COMPRESSION =>
'NONE', VERSIONS => '1', TTL => '2147483647', BLOCKSIZE => '65536',
IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}
{noformat}
{quote}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message