我一直在閱讀有關Apache Cassandra
最近,以瞭解它是如何工作的,以及如何使用它的物聯網項目,尤其是在需要基於時間序列數據庫的..卡桑德拉的火花善良?
不過,我開始注意到,Apache Spark
經常提到的當人們也談論Cassandra
時。
問題是,只要我可以使用Cassandra
節點集羣爲我的應用程序服務,存儲和讀取數據,爲什麼我需要Apache Spark
?任何有用的使用案例都將受到讚賞!
我一直在閱讀有關Apache Cassandra
最近,以瞭解它是如何工作的,以及如何使用它的物聯網項目,尤其是在需要基於時間序列數據庫的..卡桑德拉的火花善良?
不過,我開始注意到,Apache Spark
經常提到的當人們也談論Cassandra
時。
問題是,只要我可以使用Cassandra
節點集羣爲我的應用程序服務,存儲和讀取數據,爲什麼我需要Apache Spark
?任何有用的使用案例都將受到讚賞!
答案很廣,但總結... Cassandra具有高度的可擴展性,並且有許多場景適合,但如果您的架構沒有準備好進行某些查詢,CQL sintax會有一些限制。
如果您想無限制地使用您的數據,並使用您的cassandra數據執行分析工作負載或與其他表進行聯合Spark是最合適的補充。 Spark與Cassandra緊密整合。
Apache cassandra具有快速讀取和寫入功能,因此您可以將它與apache spark串流一起使用,將數據直接寫入cassandra而無需遺留。 對於用例,您可以考慮任何視頻應用程序在流媒體的幫助下上傳視頻,並直接將其存儲到cassandra blob中。
Cassandra是用於存儲數據,其中星火是在它上面進行一些計算。與Hadoop類比:Cassandra就像HDFS,Spark就像Map Reduce。
特別是在計算時,當使用DataStax Cassandra connector
,時,數據局部性可被利用。如果您需要做一些修改某行的計算(但並不真的依賴於其他任何內容),那麼該操作會優化爲在羣集中的每臺計算機上本地運行,而不會在網絡中進行任何數據移動。
與其他很多Spark工作負載一樣,動作(某些修改數據的函數)在本地完成,只有結果發送到客戶端。據我所知,當你想在存儲在Cassandra的數據上進行分析時,Spark得到了很好的支持和流行的選擇。如果您不需要對數據進行任何操作,則仍然可以將Spark用於其他目的,如下所述。
Spark streaming
可以用來從Cassandra中獲取或導出數據(我個人使用過它)。使用小型手寫JDBC代理可以實現相同的數據導入/導出,但是爲了從Cassandra獲取10GB數據而編寫的Spark流代碼包含少於20行的代碼,並且內置了多機多線程和管理UI,其中I可以看到工作進展。
隨着Spark+Zeppelin
,我們可以用星火可視化卡桑德拉的數據,我們可以建立小星火碼漂亮的用戶界面,用戶甚至可以進入輸入和看到的結果爲圖/表等
注:實際上,可以可視化使用Kassana/ElasticSearch或Solr/Banana時,與Cassandra一起使用會更好,但它們很難設置和編制索引是否有自己的問題需要解決。
還有很多其他用例,但我個人使用Spark作爲瑞士軍刀用於多項任務。
我想補充一點,目前Cassandra的Spark連接器不支持Spark 2.0。 –
@SaifCharaniya不支持2.0.0和Scala 2.10和2.11 http://search.maven.org/#artifactdetails%7Ccom.datastax.spark%7Cspark-cassandra-connector_2.11%7C2.0.0-M3%7Cjar 在此,2.11是Scala版本,2.0.0是Spark版本。 – Sreekar