カサンドラのキースペースのスキーマを読みたいです。Cassandra-cli では、次のコマンドを実行してスキーマを取得できることを知っています。
show schema keyspace1;
しかし、Javaを使用してリモートマシンからスキーマを読みたい.
どうすればこれを解決できますか? 助けてください....
これはthrift clientを使って解決しました
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 は配列リストです。