簡體   English   中英

正在從Cassandra中獲取數據?

[英]Getting data OUT of Cassandra?

如何在一段時間內(例如每小時或每天)或從Cassandra數據庫中導出更新的記錄來導出數據? 似乎使用帶有日期字段的索引似乎可行,但是當我手動嘗試時,我肯定會在cqlsh中超時,因此我擔心這樣做不可靠。

如果這不是正確的方法,那么人們如何將數據從Cassandra中提取到傳統數據庫中(用於分析,使用JOIN進行查詢等)? 它不是一家Java商店,因此使用Spark並非易事(而且我們不想將整個系統更改為直接使用Spark而不是cassandra)。 我是否必須閱讀sstables並嘗試以這種方式跟蹤它們? 有沒有辦法說“讓我在時間點X之后受影響的所有記錄”或“讓我在時間戳X之后獲得所有的更改”或類似的說法?

看起來Cassandra在快速讀取和寫入單個記錄方面確實很棒,但是除此之外,如果您想將Cassandra的數據放入其他任何數據進行分析,倉儲或查詢,Cassandra似乎不是正確的工具...

正如您所說,Spark是最典型的做到這一點的工具。 它有效地做到了,並且使用起來非常可靠。 Cassandra並不是真正為OLAP工作負載而設計的,但是諸如火花連接器之類的東西有助於縮小差距。 DataStax Enterprise可能還有更多選項供您選擇,但我不確定它們當前的產品。

您仍然可以使用普通的CQL查詢來查詢和分頁整個數據集,只是速度並不快。 您甚至可以警惕ALLOW FILTERING,因為它非常昂貴並且會影響您的群集(為工作負載創建一個單獨的DC,並對其使用LOCOL_CL查詢會有所幫助)。 在這種情況下,您可能還會在< token()子句中添加< token()> token()以拆分查詢並防止在任何一個協調器上進行過多的工作。 強烈建議您整理數據,以提高查詢效率(例如,如果要進行時間片,則將其放入按時間存儲的分區中並聚簇關鍵timeuuid,以便對時間的每個部分進行順序讀取)。

聽起來有點俗氣,但是cqlsh的CSV轉儲實際上非常快,如果您的數據集足夠小,則可能對您有用。

除非您熟悉內部結構並使用hadoop或spark,否則我不建議您直接進入sstables。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM