Кассандра огромное чтение данных с помощью драйвера Java - PullRequest
0 голосов
/ 11 октября 2018

Мне нужно прочитать 3 ТБ производственных данных из базы данных Cassandra.

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

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

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

вот мой код в части Statement select = QueryBuilder.select().all().from("demo", "emp");

, и вот как я выполняю пейджинг

List<Row> secondPageRows = cassandraPaging.fetchRowsWithPage(select, 100001, 25000);
printUser(secondPageRows);

Где 100001 - это начальное значение, из которого я хочу вывести строку, а 25000 - размер страницы.поэтому здесь я должен сначала достичь 100000, а затем я напечатаю 100001-е значение.это вызывает у меня проблему с кучей, плюс в моем случае, я не хочу, чтобы в конце одной страницы была указана первая запись для другой страницы.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

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

https://docs.datastax.com/en/developer/java-driver/3.6/manual/paging/

Здесь драйвер позаботится о нумерации страниц.

0 голосов
/ 11 октября 2018

Я могу подумать о 2 возможных решениях для этого:

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

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

...