我想在cassandra中读取键空间的模式。 我知道,在Cassandra-cli中我们可以执行以下命令来获取Schema
show schema keyspace1;
但我想使用java从远程机器读取模式。
我怎么能解决这个问题? Plzzz帮助我......
答案 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。