業內有這樣一種說法,SQL固然在大數據闡明規模久經檢驗,可是無奈長江后浪推前浪,和炙手可熱的Hadoop對比,SQL已顛末期了。這個說法有點言過其實,此刻許多的項目都是將Hadoop作為數據存儲,然后操作SQL舉辦前端查詢。這說明Hadoop需要一種高級查詢語言的支持。 Hadoop MapReduce固然可以或許舉辦數據闡明,可是太巨大了。于是,開拓人員開拓出了雷同SQL的Pig和Hive。
大數據時代,我們有許多的查詢東西可以選擇。固然SQL占據著絕對優勢,可是跟著大數據的一連升溫,也給了Apache Pig和Hive很大的發揮空間。工欲善其事必先利其器,假如選擇了符合的平臺和語言,會讓數據的提取,處理懲罰和闡明到達事半功倍的結果。將來,數據會越來越大,數據闡明必需要更易操縱。處理懲罰速度快和操縱簡樸肯定成為大數據闡明的主流趨勢。 Apache Pig,Apache Hive和SQL是當今主流的大數據東西。它們各有優勢,下面我們就先來簡樸先容Apache Pig、Apache Hive和SQL。
SQL
布局化查詢語言(SQL)是措施員的最佳朋儕,主要用于處理懲罰和提取數據。大數據改變了數據處理懲罰和可視化的方法。可是SQL嚴格的干系數據庫模式和聲明特性依然是數據闡明的標桿。盡量SQL市場遼闊,可是大數據也對SQL的成果和機能提出了挑戰。
Pig
Apache Pig適合有SQL配景的措施員進修,其有以下兩個特點:
1.放寬了對數據存儲的要求
2.可以操縱大型數據集
Apache Pig是雅虎在2006年開拓,除了上述特點,它尚有很好的可擴展性和機能優化。 Apache Pig答允開拓人員跟蹤多個查詢要領,從而低落了數據的反復檢索。它支持復合數據范例(Map、Tuple、Bag),支持常見的數據操縱,譬喻篩選、排序和Join。Apache Pig的這些特性獲得了世界各地用戶的承認,就連雅虎和推特也回收了Apache Pig。
Hive
盡量Apache Pig機能優異,可是它要求措施員要把握SQL之外的常識。Hive和SQL很是相似,固然Hive查詢語言(HQL)有必然的范圍性,但它仍然長短常好用的。Hive為MapReduce提供了很好的開源實現。它在漫衍式處理懲罰數據方面表示很好,不像SQL需要嚴格遵守模式。
數據的提取、處理懲罰和闡明沒有一個萬全之策,需要綜合多種因素來選擇,譬喻數據存儲要領,編程語言布局以及預期的功效。下面我們就來比擬一下Pig、Hive和SQL,看看它們各自都適合什么樣的場景。
Pig VS SQL
SQL在DBMS系統的運行速度要比MapReduce(Pig運行在PigLatin平臺)快。然而,RDBMS的數據加載很具挑戰,配置堅苦。 PigLatin在聲明式執行打算、ETL流程和管道修改方面更有優勢。
在很洪流平上,SQL是聲明式語言,而PigLatin是進程語言。SQL主要是指定完成的工具,新加坡云主機 香港云主機,即要完成“什么”,而Pig主要是擬定完成的方法,即“如何”執行一個任務。在執行之前,Pig劇本要轉化成MapReduce任務。不外,Pig劇本比相應的MapReduce任務要短,明顯縮短了開拓時間。
Hive VS SQL
SQL是一個被遍及用于事務性和闡明查詢的通用數據庫語言。而Hive是以數據闡明為方針而設計的,這也抉擇了Hive會缺少更新和刪除成果,可是讀取和處理懲罰海量數據的本領會很強。Hive和SQL長短常相似的,最主要的區別就是Hive缺少更新和刪除成果。
盡量Hive和SQL有所區別,可是假如你有SQL配景,就可以平穩過渡到Hive。別的,必然要留意兩者在布局和語法上的差別。
相信各人通過上面臨Pig、Hive和SQL的先容,對它們都有了必然的相識,下面我們就來先容一下它們的詳細合用場景。
Apache Pig的合用場景
Apache Pig合用于非布局化的數據集,可以充實操作SQL。Pig無需構建MapReduce任務,假如你有SQL進修的配景,那么入門會很是快。
Apache Hive的應用場景
許多企業都需要對汗青數據舉辦闡明,Hive就是一款闡明汗青數據的利器。可是Hive只有在布局化數據的環境下才氣大顯神威。Hive的軟肋是及時闡明,假如想要舉辦及時闡明,可以回收HBase。
SQL的應用場景