You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Lyuben Todorov (JIRA)" <ji...@apache.org> on 2013/09/01 14:58:52 UTC

[jira] [Commented] (CASSANDRA-5852) json2sstable breaks on data exported from sstable2json.

    [ https://issues.apache.org/jira/browse/CASSANDRA-5852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13755712#comment-13755712 ] 

Lyuben Todorov commented on CASSANDRA-5852:
-------------------------------------------

There are two problems here.
* First the json has an empty column that causes empty values to be added to the sstable [gist|https://gist.github.com/lyubent/6404249] 
* Second, the key is stored as hex which is correct, but the values are stored as strings, should we change this in sstable2json (when we export the data) or should the import tool (json2sstable) just allow an option to import from string values and hex values?
                
> json2sstable breaks on data exported from sstable2json.
> -------------------------------------------------------
>
>                 Key: CASSANDRA-5852
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5852
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 1.2.4, 1.2.9, 2.0 rc1
>            Reporter: Ryan McGuire
>            Assignee: Lyuben Todorov
>         Attachments: r.json
>
>
> Attached is a JSON formatted sstable generated by sstable2json.
> This file cannot be loaded back into Cassandra via json2sstable; it outputs this error:
> {code}
> Counting keys to import, please wait... (NOTE: to skip this use -n <num_keys>)
> Importing 16 keys...
> java.lang.NumberFormatException: Non-hex characters in value6
> 	at org.apache.cassandra.utils.Hex.hexToBytes(Hex.java:60)
> 	at org.apache.cassandra.utils.ByteBufferUtil.hexToBytes(ByteBufferUtil.java:503)
> 	at org.apache.cassandra.tools.SSTableImport.stringAsType(SSTableImport.java:578)
> 	at org.apache.cassandra.tools.SSTableImport.access$000(SSTableImport.java:59)
> 	at org.apache.cassandra.tools.SSTableImport$JsonColumn.<init>(SSTableImport.java:154)
> 	at org.apache.cassandra.tools.SSTableImport.addColumnsToCF(SSTableImport.java:231)
> 	at org.apache.cassandra.tools.SSTableImport.addToStandardCF(SSTableImport.java:214)
> 	at org.apache.cassandra.tools.SSTableImport.importSorted(SSTableImport.java:432)
> 	at org.apache.cassandra.tools.SSTableImport.importJson(SSTableImport.java:319)
> 	at org.apache.cassandra.tools.SSTableImport.main(SSTableImport.java:543)
> ERROR: Non-hex characters in value6
> {code}
> Steps to reproduce:
> {code}
> $ ccm create -v git:trunk test-json-import
> Fetching Cassandra updates...
> Current cluster is now: test-json-import
> $ ccm populate -n 1
> $ ccm start
> $ ccm node1 cqlsh
> Connected to test-json-import at 127.0.0.1:9160.
> [cqlsh 4.0.0 | Cassandra 2.0.0-rc1-SNAPSHOT | CQL spec 3.1.0 | Thrift protocol 19.37.0]
> Use HELP for help.
> cqlsh> CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
> cqlsh> CREATE TABLE test.test (key varchar PRIMARY KEY, value varchar);
> cqlsh> INSERT INTO test.test (key, value) VALUES ('ryan', 'ryan');
> cqlsh> 
> $ ccm node1 flush
> $ ccm stop
> $ ~/.ccm/test-json-import/node1/bin/json2sstable -s -K test -c test ~/Downloads/import_error/r.json ~/.ccm/test-json-import/node1/data/test/test/test-test-ja-1-Data.db 
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira