Cassandra читает исключения исключений с помощью драйвера C #

1

Мы хотим измерить производительность Cassandra, поэтому мы планируем записать 10800 строк данных в одну таблицу, каждая строка содержит около 1 МБ данных. Для письма это не проблема.

Когда мы попытались прочитать все выше 10800 строк из cassandra, он всегда генерирует исключение:

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 рядов, кажется, все в порядке.

Итак, что лучше всего читать данные в cassandra с С#? Я думаю, что данные 10800 МБ не настолько велики, почему они не могут их прочитать? Или я что-то пропустил?

Огромное спасибо.

  • 1
    1) Вы пытались выполнить те же запросы из cqlsh? Первая ошибка - это тайм-аут Cassandra (не тайм-аут драйвера), который указывает на медленный кластер; 2) какую версию драйвера C # вы используете?
Теги:
performance
cassandra
cql3
cql

1 ответ

0

Я попытался бы выяснить, почему вы получаете время на чтение из Cassandra (через отслеживание), вам не нужно менять настройки тайм-аута чтения в Cassandra (ваш узел под Windows?).

После этого на уровне драйвера вы можете настроить, что делать, когда вы получаете тайм-аут чтения (реализация политики повтора, образец здесь), но в целом это не требуется.

Если вы читаете строки cql размером около 1 МБ, вы можете попробовать, уменьшив размер страницы (по умолчанию: 5000) с помощью метода Statement.SetPageSize().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню