CQL3 Query返回一个带有null键的行

时间:2013-06-08 20:29:52

标签: groovy cassandra astyanax cql3

我对Cassandra很新,并尝试使用Astyanax / CQL3来处理一些简单的用例。我试图从Groovy应用程序在Cassandra 1.2版本上使用Astyanax和CQL3从一个简单的表中检索数据。

我有以下列族(表):

CREATE TABLE t_index_credential (
  id varchar,
  versions map<timestamp,varchar>,
  PRIMARY KEY (id)
);

表中存在以下行:

 id  | versions
-----+---------------------------------
 xyz | {2001-01-01 00:00:00-0500: 1.0}

这就是我查询数据的方式:

def id = "xyz"
def cfName = "t_index_credential"
def mapSerializer = new MapSerializer<Date,String>(DateType.instance, UTF8Type.instance)
def strSerializer = StringSerializer.get()

def cf = ColumnFamily.newColumnFamily(cfName, strSerializer, mapSerializer)
def cql = "SELECT * FROM ${cfName} WHERE id = '${id}';"

def query = keyspace.prepareQuery(cf).withCql(cql)
def result = query.execute().getResult()

result.getRows().each { row ->
  println "rowKey: " + row.getKey()
}

这个输出是:

rowKey: null

尝试访问行中的任何列会导致以下结果:

result.getRows().each { row ->
  row.getColumns().each { col ->
    println col.dump()
  }
}

org.apache.cassandra.db.marshal.MarshalException: Not enough bytes to read a map

感觉好像我错过了很简单的东西。我做对了吗?

0 个答案:

没有答案