我們想要測量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