我们想要测量Cassandra的性能,所以我们计划将10800行数据写入一个表,每行有大约1MB的数据。对于写作来说,这似乎没有问题。Cassandra使用C#驱动读取抛出异常
当我们试图读取卡桑德拉上述所有10800行,它总是抛出异常这样的:
Cassandra.ReadTimeoutException: Cassandra timeout during read query at consistency One (0 replica(s) responded over 1 required)
at Cassandra.TaskHelper.WaitToComplete[T](Task`1 task, Int32 timeout)
at Cassandra.Session.Execute(IStatement statement)
at Cassandra.Session.Execute(String cqlQuery, ConsistencyLevel consistency)
at DataCloud.TestApps.CassandraTest.CassandraClient.Execute(String cqlQuery)
然后我们手工修改了cassandra.yaml文件读超时值更改为有足够的时间,它仍然同样的例外。
我们用来查询所有的数据是:
SELECT * FROM table1 WHERE id = ...; // The id is the partition key
所以我们改变了行数到1024,仍然是阅读抛出异常,但是这一次是不同的:
Cassandra.NoHostAvailableException: None of the hosts tried for query are available (tried: 127.0.0.1)
at Cassandra.RequestHandler`1.GetNextConnection(IStatement statement, Boolean isLastChance)
at Cassandra.RequestHandler`1.TrySend()
at Cassandra.TaskHelper.WaitToComplete[T](Task`1 task, Int32 timeout)
at Cassandra.Session.Execute(IStatement statement)
at Cassandra.Session.Execute(String cqlQuery, ConsistencyLevel consistency)
at DataCloud.TestApps.CassandraTest.CassandraClient.Execute(String cqlQuery)
我们也试过100行,看起来没问题。
那么,用C#读取cassandra中的数据的最佳做法是什么?我认为10800MB数据并不是那么庞大,为什么它无法读取所有这些数据?或者我错过了什么?
非常感谢。
1)你有没有试过从cqlsh运行相同的查询?第一个错误是Cassandra超时(而不是驱动程序超时),这会指向群集缓慢; 2)你使用的是什么版本的C#驱动程序? – 2014-09-08 18:48:13