spark sql的應用場景


最近一直在銀行做歷史數據平台的項目,目前整個項目處於收尾的階段,也好有時間整理下在項目中的一些收獲。

該歷史數據平台使用spark+Nosql架構了,Nosql提供了海量數據的實時查詢,而spark提供了sql支持,最開始給客戶設計方案的時候,對spark sql也不是很熟悉,只知道它的thriftserver可以支持JDBC,在做方案的設計的使用,Spark SQL提供了對外查詢的接口。在測試中發現,spark sql的sql是一個執行完成后才能執行另一個,就是換了fair這種作業調度方式,整個集群的並發還是很慢。

 

spark是一個分布式計算框架, 從他的作業調度可以看到http://spark.apache.org/docs/latest/job-scheduling.html,它的資源分配粒度很粗,CPU的核數進行分配的,集群的CPU資源是有限的,同時spark sql資源計算時需要把大量數據加載到內存中,需要消耗集群大量的內存資源,再做shuffle的時候,又需要消耗大量的網絡IO和磁盤IO, 如果同時多個job執行,那么每個job獲得資源要么少,要么需要排隊。而不能像關系型數據庫那么提供高並發的服務。

我咨詢了一下做NoSQL開發的哥們,NoSQL中沒有做任務調度,但是每次查詢的速度很快,對請求處理很塊,這樣並發就好了。如果遇到執行慢的請求,也會拖累查詢速度,畢竟硬件資源有限,當然目前他們也在做資源調度這一塊。

 

通過上面的分析,Spark SQL只是一個批處理的工具,所以如果用戶比較少,並發要求不高,可以用spark  sql,如果你想像關系型數據庫那樣提供對外服務,就選錯工具了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM