我想在 cassandra 中读取键空间的模式。我知道,在 Cassandra-cli 中,我们可以执行以下命令来获取 Schema
show schema keyspace1;
但我想使用 java 从远程机器读取模式。
我怎么能解决这个问题?Lzzz 帮帮我....
我通过使用节俭客户端解决了这个问题
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 是数组列表。