Выберите и оцените строку cassandra на основе столбца без ключа раздела

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

У меня есть эта модель стола

CREATE TABLE signature_count_per_year(
   sensor_id text,
   signature text,
   hit_count int,
   year int,
   PRIMARY KEY ((sensor_id), signature, year)
)WITH CLUSTERING KEY (signature ASC, year DESC)

Я помещаю данные в эту таблицу, используя функцию спарк-окна ( 1-летнее окно) в качестве потокового процесса, где данные, которые вставляются с этим запросом (для каждого пакета)

INSERT INTO signature_count_per_year (sensor_id, signature, hit_count, year) VALUES ('sssj901', 'h80skooa', 91231442, 2018)
INSERT INTO signature_count_per_year (sensor_id, signature, hit_count, year) VALUES ('sssj901', 'suua09dd', 284421, 2018)
INSERT INTO signature_count_per_year (sensor_id, signature, hit_count, year) VALUES ('sssj901', '88wsiiaa', 9022345, 2018)
INSERT INTO signature_count_per_year (sensor_id, signature, hit_count, year) VALUES ('sssj901', 'asgg9910', 81112331, 2018)

Содержание таблицы будет таким

Sensor_id        signature        hit_count        year
sssj901          h80skooa         891231           2018
sssj901          suua09dd         284421           2018
sssj901          88wsiiaa         9022345          2018
sssj901          asgg9910         81112331         2018
...              ...              ...              ...

Мне нужно запросить только 10 самых высоких хитов этой таблицы, но я не могу сделать это, используя ORDER BY, потому что hit_count не является первичным ключом.

Что я хотел запрос будет:

select * from signature_count_per_year order by hit_count DESC LIMIT 10

До сих пор я уже пытался выбрать все строки и отсортировать их по hit_count от клиента.

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

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

Есть ли альтернатива для моей проблемы? Любая помощь приветствуется

0 ответов

Другие вопросы по тегам