2016-10-03 129 views
2

我一直在閱讀有關Apache Cassandra最近,以瞭解它是如何工作的,以及如何使用它的物聯網項目,尤其是在需要基於時間序列數據庫的..卡桑德拉的火花善良?

不過,我開始注意到,Apache Spark經常提到的當人們也談論Cassandra時。

問題是,只要我可以使用Cassandra節點集羣爲我的應用程序服務,存儲和讀取數據,爲什麼我需要Apache Spark?任何有用的使用案例都將受到讚賞!

回答

3

答案很廣,但總結... Cassandra具有高度的可擴展性,並且有許多場景適合,但如果您的架構沒有準備好進行某些查詢,CQL sintax會有一些限制。

如果您想無限制地使用您的數據,並使用您的cassandra數據執行分析工作負載或與其他表進行聯合Spark是最合適的補充。 Spark與Cassandra緊密整合。

,我建議你檢查這個幻燈片:http://www.slideshare.net/patrickmcfadin/apache-cassandra-and-spark-you-got-the-the-lighter-lets-start-the-fire?qid=48e2528c-a03c-49b4-879e-45599b2aff34&v=&b=&from_search=5

+0

我想補充一點,目前Cassandra的Spark連接器不支持Spark 2.0。 –

+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

-2

Apache cassandra具有快速讀取和寫入功能,因此您可以將它與apache spark串流一起使用,將數據直接寫入cassandra而無需遺留。 對於用例,您可以考慮任何視頻應用程序在流媒體的幫助下上傳視頻,並直接將其存儲到cassandra blob中。

1

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作爲瑞士軍刀用於多項任務。