Тайм-аут Кассандры с запросом COUNT - PullRequest
1 голос
/ 10 мая 2019

ПРИМЕЧАНИЕ. У меня более 15967908 записей. Я новичок в Cassandra. Справка: Есть ли способ эффективно подсчитать строки очень большого раздела в Кассандре?

Истекло время ожидания для узла-координатора ожидания узлов реплики в Cassandra Datastax во время вставки данных

Привет, приятели, я ищу другие ответы, но у меня ничего не вышло. Они упомянули, что нам нужно увеличить время ожидания в файле cassandra.yaml , но проблема в том, что у меня нет файла.

Я установил Cassandra вместе с HomeBrew. Ниже приводится версия, которую я сейчас использую на своем MacBook

.
cqlsh:cassandra_training> show version;
[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]

Когда я делаю

cqlsh:cassandra_training> select count(*) from access_point_logs;

Затем появляется следующая ошибка

ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 1 responses." info={'received_responses': 1, 'required_responses': 1, 'consistency': 'ONE'}

Какой файл мне нужен, чтобы увеличить время ожидания. Поскольку я не получаю файл cassandra.yaml .

Мой путь установки Cassandra следующий

/usr/local/Cellar/cassandra/3.11.4

Есть ли способ подсчета количества записей.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Короче, ответ - нет.Вы не должны запускать запросы без указания каких-либо ключей, так как это не то, как был разработан Cassandra.

Если вам просто нужно одноразовое число, вы можете использовать tabletoat для nodetool для этого.

nodetool tablestats cassandra_training.access_point_logs

Найдите в выводе «Количество ключей (оценка)».

Приведенная выше команда даст вам примерное количество ключей разделения в вашей таблице., так что это может или не может быть то, что вы ищете.

Если вам нужно регулярно получать этот номер, я бы обычно создавал другую таблицу счетчиков и управлял ею, когда вы добавляете / удаляете записи из другоготаблица.

0 голосов
/ 13 мая 2019

Я разобрался с проблемой.При создании таблицы я неправильно добавлял Первичный ключ с Кластерный ключ , из-за которого он отображал такую ​​ошибку.

Ранее я создал структуру таблицы следующим образом

create table access_point_logs (
    id bigint primary key,
    wd_number varchar,
    ip_address varchar,
    mac_address varchar,
    created_at timestamp,
    updated_at timestamp,
    access_point_id bigint
);

Теперь изменил ее на следующий

create table access_point_logs(
    id bigint,
    wd_number varchar,
    ip_address varchar,
    mac_address varchar,
    created_at timestamp,
    updated_at timestamp,
    access_point_id bigint,
    primary key ((wd_number), created_at, mac_address)
) with clustering order by (created_at desc);

На всякий случай, если какой-нибудь новичок, как я, яхотел бы добавить следующее определение и примеры, чтобы понять, что такое ключ раздела и что такое ключ кластера

. Внимательно наблюдайте за изменением со следующим

primary key ((wd_number), created_at, mac_address);


Partition Key - wd_number

Cluster Key - created_at, mac_address

ключ разделения - какой конкретный узелдля сохранения данных в кластере.

Ключ кластеризации - в основном используется для сортировки данных и отображения порядка по умолчанию при извлечении данных.

Первичный ключ - возможно сочетание ключа раздела +Ключ кластера или просто ключ раздела

Надеюсь, что это может кому-то помочь.В случае, если у кого-то есть вопросы, пожалуйста, не стесняйтесь.Я сделаю все возможное, чтобы ответить на них.

...