如何使用 Hector检索 Cassandra 密钥空间/列系列中键列的名称



我想将Cassandra键空间/列系列行转换为JSON字符串。我当前的代码(片段):

RangeSlicesQuery<K, N, V> rangeSlicesQuery = HFactory
    .createRangeSlicesQuery(this.keyspace, this.kSerializer, this.nSerializer, this.vSerializer)
    .setColumnFamily(this.columnFamily)
    .setRange(null, null, false, 100)
    .setRowCount(1000);
this.results = this.rangeSlicesQuery.execute();
this.resultRows = this.results.get();
this.resultRowsIterator = this.resultRows.iterator();
Row<K, N, V> row = this.resultRowsIterator.next();

从行中,我可以轻松获取所有列名/值(我正在使用杰克逊 JSON API 来创建 JSON):

List<HColumn<N, V>> columns = row.getColumnSlice().getColumns();
for(HColumn<N, V> column : columns) {
    node.put(column.getName().toString(), column.getValue().toString());
}
System.out.println(node.toString());

我的问题是,如何获取键列名称?我知道我可以通过执行以下操作来获取行的键值:

row.getKey();

但是我还没有找到任何方法来获取键列的名称,例如row.getKeyColumnName().我尝试查看KeySpaceDefinition,ColumnFamilyDefinition,ColumnDefinition和ColumnFamilyTemplate。它们似乎都没有这种能力(尽管也许有一个可以针对模板运行的查询?

Thrift 列系列的行键没有显式名称。

如果您使用的是 CQL 表,则构成主键的列具有名称,但 Hector可能不适合访问它们,因为它是在 CQL 成为数据建模的主要方式之前开发的。无论哪种情况,我强烈建议您 https://github.com/datastax/java-driver 查看Datastax驱动程序,如果您使用的是Cassandra 1.2+。

最新更新