如何使用Astyanax执行“'describe”CQL查询

时间:2013-08-28 00:37:13

标签: java cassandra cql astyanax cql3

在Cassandra中使用cqlsh时,您可以进行describe查询以获取表格信息,例如:

DESCRIBE TABLE emp;

它会给你一些类似的东西:

CREATE TABLE emp (
  empid int PRIMARY KEY,
  deptid int,
  description text
) ...
....

那么如何使用Astyanax对CQL的支持来查询它。我能用这个查询简单的SELECT语句:

OperationResult<CqlResult<String, String>> result
            = keyspace.prepareQuery(empColumnFamily)
              .withCql("Select * from emp;")
              .execute();

但这不适用于DESCRIBE语句。

PD:我真的这样做是为了得到表的DATA TYPES,稍后解析它并获得例如int, int, text,所以如果你有不同的方法来获取它们,那么它可能是真棒。

此查询select column, validator from system.schema_columns;不起作用,因为它不返回复合键。

1 个答案:

答案 0 :(得分:5)

DESCRIBE不属于CQL规范(CQL2CQL3)。如果您想完全重建DESCRIBE,可以查看cqlsh实现(查找print_recreate_columnfamily)。

您还可以从system.schema_columnfamilies获取更多元信息:

select keyspace_name, columnfamily_name, key_validator from schema_columnfamilies;