SQL、ApachePig和ApacheHive這幾個查詢工具,我們都不陌生,也是現(xiàn)在最常用的幾種數(shù)據(jù)查詢工具,各自有優(yōu)勢及特點,但每個工具都有其適合平臺和語言,互相結(jié)合才能讓數(shù)據(jù)處理分析達到事半功倍的效果。因此,我們大圣眾包(www.dashengzb.cn)小編根據(jù)資料整理對比了ApachePig,ApacheHive和SQL各自優(yōu)勢及特點。
SQL
結(jié)構(gòu)化查詢語言(SQL)是程序員的最佳伴侶,主要用于處理和提取數(shù)據(jù)。大數(shù)據(jù)改變了數(shù)據(jù)處理和可視化的方式。但是SQL嚴格的關(guān)系數(shù)據(jù)庫模式和聲明特性依然是數(shù)據(jù)分析的標桿。盡管SQL市場廣闊,但是大數(shù)據(jù)也對SQL的功能和性能提出了挑戰(zhàn)。
Pig
ApachePig適合有SQL背景的程序員學習,其有以下兩個特點:
1.放寬了對數(shù)據(jù)存儲的要求
2.可以操作大型數(shù)據(jù)集
ApachePig是雅虎在2006年開發(fā),除了上述特點,它還有很好的可擴展性和性能優(yōu)化。ApachePig允許開發(fā)人員跟蹤多個查詢方法,從而降低了數(shù)據(jù)的重復檢索。它支持復合數(shù)據(jù)類型(Map、Tuple、Bag),支持常見的數(shù)據(jù)操作,例如篩選、排序和Join。ApachePig的這些特性得到了世界各地用戶的認可,就連雅虎和推特也采用了ApachePig。
Hive
盡管ApachePig性能優(yōu)異,但是它要求程序員要掌握SQL之外的知識。Hive和SQL非常相似,雖然Hive查詢語言(HQL)有一定的局限性,但它仍然是非常好用的。Hive為MapReduce提供了很好的開源實現(xiàn)。它在分布式處理數(shù)據(jù)方面表現(xiàn)很好,不像SQL需要嚴格遵守模式。
數(shù)據(jù)的提取、處理和分析沒有一個萬全之策,需要綜合多種因素來選擇,例如數(shù)據(jù)存儲方法,編程語言結(jié)構(gòu)以及預期的結(jié)果。下面我們就來對比一下Pig、Hive和SQL,看看它們各自都適合什么樣的場景。
PigVSSQL
SQL在DBMS系統(tǒng)的運行速度要比MapReduce(Pig運行在PigLatin平臺)快。然而,RDBMS的數(shù)據(jù)加載很具挑戰(zhàn),設(shè)置困難。PigLatin在聲明式執(zhí)行計劃、ETL流程和管道修改方面更有優(yōu)勢。
在很大程度上,SQL是聲明式語言,而PigLatin是過程語言。SQL主要是指定完成的對象,即要完成“什么”,而Pig主要是制定完成的方式,即“如何”執(zhí)行一個任務。在執(zhí)行之前,Pig腳本要轉(zhuǎn)化成MapReduce任務。不過,Pig腳本比相應的MapReduce任務要短,顯著縮短了開發(fā)時間。
HiveVSSQL
SQL是一個被廣泛用于事務性和分析查詢的通用數(shù)據(jù)庫語言。而Hive是以數(shù)據(jù)分析為目標而設(shè)計的,這也決定了Hive會缺少更新和刪除功能,但是讀取和處理海量數(shù)據(jù)的能力會很強。Hive和SQL是非常相似的,最主要的區(qū)別就是Hive缺少更新和刪除功能。
盡管Hive和SQL有所區(qū)別,但是如果你有SQL背景,就可以平穩(wěn)過渡到Hive。另外,一定要注意兩者在結(jié)構(gòu)和語法上的差異。
相信大家通過上面對Pig、Hive和SQL的介紹,對它們都有了一定的了解,下面我們就來介紹一下它們的具體適用場景。
ApachePig的適用場景
ApachePig適用于非結(jié)構(gòu)化的數(shù)據(jù)集,可以充分利用SQL。Pig無需構(gòu)建MapReduce任務,如果你有SQL學習的背景,那么入門會非常快。
ApacheHive的應用場景
很多企業(yè)都需要對歷史數(shù)據(jù)進行分析,Hive就是一款分析歷史數(shù)據(jù)的利器。但是Hive只有在結(jié)構(gòu)化數(shù)據(jù)的情況下才能大顯神威。Hive的軟肋是實時分析,如果想要進行實時分析,可以采用HBase。
SQL的應用場景
SQL是三者之中資歷最老的數(shù)據(jù)分析工具,隨著用戶需求的不斷變更,SQL也在不斷的自我更新,現(xiàn)在仍然是一個與時俱進的工具。對專業(yè)的數(shù)據(jù)分析師來說,毫無疑問,SQL比Excel要強,但是,它在快速處理和分析數(shù)據(jù)方面仍然存在著短板。如果數(shù)據(jù)要求不是很苛刻,SQL是一個很好的選擇,它的廣泛性和靈活性得到了開發(fā)人員的認可。因為絕大數(shù)的開發(fā)人員都熟悉SQL,所以可以馬上上手,同時SQL還提供了一些擴展和優(yōu)化功能,可以根據(jù)需求來定制產(chǎn)品。
SQL、Pig和Hive哪個更好?其實沒有個標準,它們?nèi)齻€都有各自的適用場景和特點,還是那句話好不好用,適不適合只有自己使用了對比過才知道。