Java Astyanax无法读取某些列族

Java Astyanax无法读取某些列族,java,cassandra,thrift,astyanax,scylla,Java,Cassandra,Thrift,Astyanax,Scylla,我试图使用Astyanax驱动程序列出Cassandra中的列族。它列出了键空间,但输出中缺少许多列族 我有一个简单的程序: import com.netflix.astyanax.AstyanaxContext; import com.netflix.astyanax.Cluster; import com.netflix.astyanax.connectionpool.impl.ConnectionPoolConfigurationImpl; import com.netflix.astya

我试图使用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());
    }
我可以使用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的其他版本中的行为。

节俭被弃用,默认情况下不再由cassandra启用。您需要启用它才能使用它。请记住,在《卡桑德拉》的下一个版本中,它甚至不存在。很有可能,即使启用和使用它,事情也可能不太正常。没有什么真正使用它了,也没有那么多的测试使用它。不同版本之间存储和检索表的方式有所不同,因此驱动程序必须知道这一点。由于没有维护Astyanax,它可能不会正确使用


Astyanax已经退役,仅适用于较旧的应用程序。您真的应该使用(与Astyanax页面上的建议相同)。

我记得在Cassandra 0.8.8-1.1和1.2中使用了Astyanax。曾经有一段时间,我们将所有数据(列)作为blob(允许更快的写入)推入一个分区,然后从thrift胖客户端解析数据(据称Cassandra此时读取速度较慢)。我们必须跟踪模式,然后在反序列化来自thrift客户端的输出时,我们将根据所有单独列的数据类型进行解析。所有这些在CQL引入后都发生了变化,正如Chris所指出的,这是使用c*.

的推荐方式,您使用了什么版本的“锡拉”?虽然卡桑德拉不赞成节俭,但《锡拉》仍然支持节俭

嗨,克里斯。谢谢,是的,我听说节俭被减损了。实际上,我正在使用另一个数据库,它使用cassandra作为存储解决方案(janusgraph)。他们的一些代码使用thrift API与DB对话。我编写的程序是由我从代码库中提取的代码片段组成的。我使用旧版本的Cassandra(2.0和2.2)进行了尝试,该版本与astyanax驱动程序的维护时间大致相同,它具有与Cassandra 1.0、1.1或1.2相同的行为。当netflix迁移到java驱动程序时,我认为2.0支持已经进入测试阶段,它基本上不再试图跟上。尝试1.2,但老实说,期望值很低。我相信如果janusgraph使用cassnadra,他们会得到某种cql支持。嘿,Peter,谢谢你的跟进。我用“锡拉2.1.0”和“2.1.3”试过这个很有趣!“锡拉2.3”(当前版本)是否显示了相同的结果?(这可能会导致同样令人失望的结果,但最好排除一个固定的错误。)如果你没有得到乐趣,考虑张贴到小组嘿彼得。我们知道发生了什么事。我们使用CQL创建表,然后尝试使用thrift将它们作为列族读取。一旦我们将其交换到init以使用CQL创建列族,它就成功了!很高兴知道!谢谢
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