Кассандра вопрос v3.11.3 ... выберите количество (*) из таблицы1 - PullRequest
0 голосов
/ 12 декабря 2018

Я импортировал более 1 основной записи в таблицу, и когда я выбрал Выбор количества запросов (*), это выдает ошибку.Я знаю, что это дорогостоящий запрос, но, может ли кто-нибудь помочь мне найти решение для того же..30.10 ':' Тайм-аут запроса клиента.См. Session.execute_async '}, last_host = 10.20.30.10

Ответы [ 2 ]

0 голосов
/ 18 января 2019

После выполнения нескольких исследований и разработок я получил решение для проблемы с количеством (*).

Шаги:

  1. Настройка presto на Cassandra Cluster (я использовал версию presto-server-0.215 (presto-server-0.215.tar.gz и используется jdk: jdk-8u151-linux-x64.tar.gz)) 1.1.presto-server-0.215.tar.gz: https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.215/ 1.2.jdk-8u151-linux-x64.tar.gz: https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
  2. Установите presto на один сервер cassandra, и он станет координатором, а остальные узлы в кластере будут рабочими, см. ниже URLдля настройки Presto.Ссылка URL: https://github.com/prestodb/presto/issues/3382
  3. Вам необходимо добавить правило брандмауэра для порта Presto, которое вы упомянули в файле config.properties (я использую ОС RHEL 7.x)
  4. Внести изменения в панель запуска.py ---> Номер строки '214' путь установленного jdk "command = ['/opt/jdk1.8.0_151/bin/java', '-cp', classpath]"
  5. Запустить presto --> ./launcher start
  6. Откройте консоль Presto http://localhost:8081, и вы увидите координатор и рабочие узлы в консоли.

  7. Загрузить«presto-cli-0.215-executetable.jar» (URL: https://prestodb.io/docs/current/installation/cli.html) и переименуйте его в prestocli (Дайте разрешение 755), а затем проверьте счетчик (*) для большой таблицы, используя «prestocli» таблицу, которая имеет 75Записи Lakhs, которые выдавали ошибку при запуске в cqlsh. 7.1. Ошибка CQLSH: ошибка сервера: code = 1200 [Тайм-аут узла координатора в ожидании ответов узлов реплики] message = "Тайм-аут операции - получено только 0 ответов."= {'Receive_responses': 0, 'required_responses': 1, 'Consistency': 'ONE'}

  8. Нижеявляется решением для count (*) ...

[root @ casdb01 bin] # ./prestocli --server localhost: 8081 presto> SELECT count (*) FROM cassandra.datamart.big_table;

_col0

7587418 (1 строка)

Запрос 20190118_070908_00005_38tiw, FINISHED, 1 узел Разделение: всего 1 298, сделано 1 298 (100,00%) 0:53 [7,59M строк,7,24 МБ] [142 КБ / с, 139 КБ / с]

Для любого запроса приложения вы можете использовать интерфейс для выполнения подсчета (*).

Особая благодарность моей команде, которая помогла мне получить этот результат (Венкатеш Бхат).

0 голосов
/ 12 декабря 2018

Так что, если это производственная система, вероятно, нет, но вы, кажется, знаете об этом.

> cqlsh --request-timeout=3600
SELECT count(*) FROM table1 ALLOW FILTERING;

У вашей системы истекло время ожидания, потому что запрос дорогой, и это ваша ошибка.Вы можете увеличить время ожидания, чтобы обойти это, но в какой-то момент Кассандра просто не сможет вернуться, если ваш набор данных достаточно большой.Кроме того, вы можете захотеть выполнить ваш запрос с консистенцией ONE, чтобы не вызывать уплотнения чтения, и он будет возвращаться быстрее.Это будет, конечно, менее точно.

Вы также можете попробовать: nodetool cfstats mykeyspace это будет только оценка, но лучше, чем ничего.

...