• <menu id="w2i4a"></menu>
  • logo 慧都大數(shù)據(jù)(一)

    文檔首頁>>慧都大數(shù)據(jù)(一)>>Big SQL 與 Spark SQL功能協(xié)作簡介

    Big SQL 與 Spark SQL功能協(xié)作簡介


    由于前期的文件已經(jīng)多次介紹了Big SQL的特點和工作機制,如《BigInsights金剛鉆之首:BigSQL - SQL on Hadoop》,《BigSQL發(fā)動機的結(jié)構和工作原理》和《BigSQL讓HBase更易用》等,而Spark SQL在網(wǎng)上也有很多相關文章,所以,這兩個SQL on Hadoop引擎的功能特點在此不在細述。

    兩種SQL引擎在一些數(shù)據(jù)處理的場景都是可以勝任和互換的。然而,Spark SQL目前還很不成熟,包括對SQL標準的支持、對數(shù)據(jù)訪問的安全性控制(行級和列級的訪問控制)和并發(fā)有待改進,而且它在處理數(shù)據(jù)時受內(nèi)存容量的限制。所以,在更多的場景中,Big SQL無論在功能上還是性能上才是最佳選擇。

    鑒于Big SQL和Spark的流行性,企業(yè)想要部署和使用這兩種技術的期望是合理的。幸運的是,Spark的應用程序不難與Big SQL共享Big SQL表中的數(shù)據(jù)。這種可能得益于Big SQL的設計,特別是它重用了Hive的HCatalog元數(shù)據(jù)管理并支持不同的Hadoop文件格式的存儲數(shù)據(jù)(而不是專有的格式)。這種方法使得Spark SQL非常容易地獲取Big SQL表的數(shù)據(jù)。

    下面,我們看一個簡單的例子,以說明Spark SQL如何訪問Big SQL的數(shù)據(jù)。

    在BigInsights中,假設您已經(jīng)在Hive倉庫或在DFS目錄中已經(jīng)創(chuàng)建了一個Big SQL表,現(xiàn)在您只需調(diào)用標準Spark SQL語句和表達式,以創(chuàng)建一個HiveContext并使用HiveQL語法查詢Big SQL表。一旦您把數(shù)據(jù)讀入到Spark,您就可以使用適當?shù)腡ransformation和Action進行數(shù)據(jù)處理。

    Big SQL

    這例子簡單明了吧!

    那么,Big SQL和Spark SQL之間如何選擇呢?看看下面這張圖就明白了:

    Big SQL

    對于很多場景,Spark SQL想做的事情,Big SQL可能一點興趣都沒有。例如,應用場景是獲取數(shù)據(jù)用于機器學習,或者是數(shù)據(jù)科學家從零開始編寫探索性的查詢,那Spark SQL是個相當好的選擇,而且它利用內(nèi)存計算能過獲取很好的性能。

    然而,如果您想從數(shù)據(jù)倉庫Offload工作負載:其查詢,報表和應用程序以最小的修改代價運行在Hadoop上,那么對每個查詢都要維護兩個版本是不可接受的。對于生產(chǎn)環(huán)境,數(shù)據(jù)訪問的安全性也是另一個非常重要的要求。還有,需要多用戶并發(fā)…這時,Big SQL才是最佳答案。

    所以,Big SQL和Spark SQL不是互斥的。您應該同時使用Big SQL和Spark SQL解決不同的問題。

    更多大數(shù)據(jù)與分析相關行業(yè)資訊、解決方案、案例、教程等請點擊查看>>>

    詳情請咨詢在線客服!

    客服熱線:023-66090381

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();