Java Astyanax无法读取某些列族
我试图使用Astyanax驱动程序列出Cassandra中的列族。它列出了键空间,但输出中缺少许多列族 我有一个简单的程序: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
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