0

カサンドラのキースペースのスキーマを読みたいです。Cassandra-cli では、次のコマンドを実行してスキーマを取得できることを知っています。

show schema keyspace1;

しかし、Javaを使用してリモートマシンからスキーマを読みたい.

どうすればこれを解決できますか? 助けてください....

4

1 に答える 1

0

これは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 は配列リストです。

于 2013-03-07T11:26:23.733 に答える