0

Astyanax ドライバーを使用して、Cassandra の列ファミリーを一覧表示しようとしています。キースペースは正常にリストされていますが、多くの列ファミリーが出力から欠落しています。

私はこれのための簡単なプログラムを持っています:

import com.netflix.astyanax.AstyanaxContext;
import com.netflix.astyanax.Cluster;
import com.netflix.astyanax.connectionpool.impl.ConnectionPoolConfigurationImpl;
import com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor;
import com.netflix.astyanax.ddl.ColumnFamilyDefinition;
import com.netflix.astyanax.ddl.KeyspaceDefinition;
import com.netflix.astyanax.impl.AstyanaxConfigurationImpl;
import com.netflix.astyanax.thrift.ThriftFamilyFactory;

public class App {

  public static void main(String[] args) throws Exception {

    ConnectionPoolConfigurationImpl cpool = new ConnectionPoolConfigurationImpl("ConnectionPool")
        .setPort(9160)
        .setSeeds("localhost");

    AstyanaxConfigurationImpl astyanaxConfiguration = new AstyanaxConfigurationImpl();
    AstyanaxContext.Builder ctxBuilder = new AstyanaxContext.Builder();
    ctxBuilder.forCluster("Cluster")
        .withAstyanaxConfiguration(astyanaxConfiguration)
        .withConnectionPoolConfiguration(cpool)
        .withConnectionPoolMonitor(new CountingConnectionPoolMonitor());

    AstyanaxContext<Cluster> clusterContext = ctxBuilder.buildCluster(ThriftFamilyFactory.getInstance());
    clusterContext.start();
    Cluster cluster = clusterContext.getClient();

    for (KeyspaceDefinition ksDef : cluster.describeKeyspaces()) {
      List<ColumnFamilyDefinition> cfDefList = ksDef.getColumnFamilyList();
      System.out.println("there are " + cfDefList.size() + " column families in keyspace " + ksDef.getName());
      for (ColumnFamilyDefinition cfDef : cfDefList) System.out.println(" - " + cfDef.getName());
    }

キースペースを一覧表示できますが、列ファミリーの多くが欠落しています。ここに出力があります。デフォルトのキースペースの多くはそこにありますが、列ファミリーの多くが欠落していることがわかります。

there are 0 column families in keyspace system_distributed
there are 3 column families in keyspace system
- hints
- schema_keyspaces
- IndexInfo
there are 2 column families in keyspace system_auth
- role_members
- resource_role_permissons_index
there are 0 column families in keyspace system_traces

cqlsh を使用して、列ファミリーが存在することを確認できます

cqlsh> DESCRIBE COLUMNFAMILIES

Keyspace system_traces
----------------------
events  sessions

Keyspace system_auth
--------------------
resource_role_permissons_index  role_permissions  role_members  roles

Keyspace system
---------------
available_ranges  size_estimates    schema_usertypes    compactions_in_progress
range_xfers       peers             paxos               schema_aggregates
schema_keyspaces  schema_triggers   batchlog            schema_columnfamilies
schema_columns    sstable_activity  schema_functions    local
"IndexInfo"       peer_events       compaction_history  hints

Keyspace system_distributed
---------------------------
repair_history  parent_repair_history

上記の出力は cassandra 2.2 を使用していますが、他のバージョンの cassandra と scylla での動作を確認しています。

4

3 に答える 3

5

Thrift は廃止され、デフォルトで Cassandra によって有効にされなくなりました。使用するには有効にする必要があります。Cassandra の次のバージョンでは存在しないことに注意してください。それを有効にして使用しても、正しく動作しない可能性が非常に高いです。それを実際に使用するものはもう何もなく、それを使用するテストもそれほど多くありません。テーブルの保存方法と取得方法はバージョン間で変更されたため、ドライバーはそれを認識している必要があります。Astyanax はメンテナンスされていないため、正しく動作しない可能性があります。

Astyanax は廃止され、古いアプリでのみ利用できます。実際にはJava ドライバーを使用する必要があります(Astyanax ページと同じ推奨事項)。

于 2018-10-03T18:51:56.397 に答える