我必須從 Cassandra 數據庫中讀取 3 TB 的生產數據。我已經使用 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 回答

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
僅供參考,以下文檔可能會有所幫助,盡管我從未嘗試過自己的文檔。
https://docs.datastax.com/en/developer/java-driver/3.6/manual/paging/
在這里驅動程序將負責分頁。

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
我可以想到兩種可能的解決方案:
1) 您需要有更好的數據模型來處理此查詢。改造您的表以處理此類查詢。
2) 使用 spark 作業來處理這樣的請求,為此你需要有一個單獨的數據中心來處理這個查詢,這樣就不必擔心堆內存。
添加回答
舉報
0/150
提交
取消