如何使用java读取键空间的模式。

时间:2012-12-31 11:11:11

标签: cassandra cql

我想在cassandra中读取键空间的模式。 我知道,在Cassandra-cli中我们可以执行以下命令来获取Schema

show schema keyspace1;

但我想使用java从远程机器读取模式。

我怎么能解决这个问题? Plzzz帮助我......

1 个答案:

答案 0 :(得分:0)

这个我通过使用thrift客户端解决了

 KsDef keyspaceDefinition = _client.describe_keyspace(_keyspace);
 List<CfDef> columnDefinition = keyspaceDefinition.getCf_defs();

这里关键空间定义包含整个架构细节,因此从KsDef我们可以读取我们想要的任何内容。在我的情况下,我想阅读元数据,所以我正在从上面的列定义中读取列元数据,如下所示。

 for(int i=0;i<columnDefinition.size();i++){
         List<ColumnDef> columnMetadata = columnDefinition.get(i).getColumn_metadata();
        for(int j=0;j<columnMetadata.size();j++){
            columnfamilyNames.add(columnDefinition.get(i).getName());
            columnNames.add(new String((columnMetadata.get(j).getName())));
            validationClasses.add(columnMetadata.get(j).getValidation_class());
            //ar.add(coldef.get(i).getName()+"\t"+bb_to_str(colmeta.get(j).getName())+"\t"+colmeta.get(j).getValidationClass());
        }
    }

这里的columnfamilyNames,columnNames和validationClasses是arraylists。