Hello!

I got stuck when trying to query CQL3 collections from Java.
I'm using Cassandra 1.2.3 with CQL3. I created a column family to store a
property graph's edges with the following command:

CREATE TABLE vertices (
  id text PRIMARY KEY,
  properties map<text, text>
)

I can access the data from the cqlsh, however, I couldn't figure out how to
iterate through the map entries in Java.
The following code iterates through the rows and columns, but does not
retrieve the key-value pairs of the "properties" map.

String query = "SELECT * FROM vertices";
CqlResult cqlResult =
client.execute_cql3_query(ByteBuffer.wrap(query.getBytes()),
COMPRESSION_LEVEL.NONE, CONSISTENCY_LEVEL.ALL);

Iterator<CqlRow> rowsIterator = cqlResult.getRowsIterator();
while (rowsIterator.hasNext()) {
  CqlRow cqlRow = rowsIterator.next();
  Iterator<Column> columnsIterator = cqlRow.getColumnsIterator();
  while (columnsIterator.hasNext()) {
    Column cqlColumn = columnsIterator.next();

    byte[] name = cqlColumn.getName();
    String nameString = new String(name);
    System.out.print(nameString + ": ");

    byte[] value = cqlColumn.getValue();
    String string = new String(value);
    System.out.println(string);
  }
}

The cqlResult.getSchema() method shows the column with the type
"org.apache.cassandra.db.marshal.MapType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)".
How can I create a HashMap<String, String> from each row's properties cell?

Thanks,
Gabor

Reply via email to