目前,SQL-on-Hadoop的采用率仍然偏低,但是其發展似乎是與Hadoop本身的采用有著相似的步調。2015年由IT研究和教育機構TDWI進行的一項對新興技術的調查證實了這一結論。
在320位受訪者中只有16%的人表示他們所在的企業正在使用商業SQL-on-Hadoop引擎作為商業智能或分析應用程序的一部分; 344位受訪者中有22%的人說Hadoop SQL技術正用于管理數據。在后一種情況中,部署水平與前一種是接近的,而這也符合調查當時以及計劃三年內的情況,這表明大多數Hadoop用戶同樣實現了SQL-on-Hadoop工具(見下表)。
Progressive Casualty Insurance Co是用戶之一,在2013年開始運行Hadoop集群來處理和分析從客戶的汽車收集的遠程信息技術數據,這是基于使用情況的汽車保險項目的一部分,該項目叫做Snapshot(快照);該集群是基于Hortonworks公司的Hadoop分布式環境,它同樣支持對用于保險產品定價的數據,以及來自Progressive網站的活動日志進行研究和開發。
大部分分析查詢、提取、轉換和加載(ETL)集成過程是針對集群中的數據執行的,而這些過程是由一款開源SQL-on-Hadoop工具HIve創建的。“Progressive的業務分析師和數據科學家已經是重度SQL用戶,因此我們想要讓提供給他們的數據結構保持不變,”該公司數據和分析部門的主管Pawan Divakarla說,“我們擁有的整個業務社群都在使用數據,而讓他們去學習別的東西是沒有意義的。”
光有Hive是不夠的 Chris Barendt是一名IT架構師,他說Progressive在部署Hive的早期遇到了一些問題,但是該技術如今變得更加穩定而且滿足用戶的大部分需求。但是要幫助提升Hive的性能讓它能夠支持交互式查詢,俄亥俄州的Mayfield Village保險公司用Tez對Hadoop SQL引擎進行了增強,Tez是一款開源應用程序框架,它起源于Hortonworks并且是用來優化Hadoop系統中的數據處理吞吐量的。
同樣,大多數Progressive的數據分析師通過Tableau的BI軟件或Hue來和Hive協同工作,而Hue最初是由Hadoop供應商Cloudera 公司開發的一款用于web應用程序的用戶界面。只有某些有能力的用戶直接在Hive中用命令行SQL編碼,Barendt說。 在線約會服務商Zoosk公司將Hive的結合體用于ETL,并將Cloudera的Impala SQL查詢軟件用于分析,同時也在前端使用Hue和Tableau來緩解數據分析師的編碼工作。這家位于舊金山的公司在2012年部署了基于Cloudera的Hadoop集群,起初是用于處理大量用戶活動和其網站產生系統日志數據,然后將信息的聚合視圖傳至一個基于Microsoft SQL Server數據庫構建的企業級數據倉庫。
直到今年早些時候,Martin Lam還是Zoosk分析和數據科學部門的資深主管,他說雖然在公司里其開發人員首先仍然是嘗試在Hadoop的原始處理環境——MapReduce上進行編程。但是這要比使用SQL花費更多的時間。使用MapReduce要用幾個小時來編寫和測試一項任務,而用SQL則只需要幾分鐘。Zoosk緊接著便實現了Hive來支持在集群中處理ETL。盡管如此,Hadoop SQL工具對于支持數據的隨機分析非常緩慢。因此,“我們并不將Hadoop作為分析平臺,”
Lam說。 Hadoop SQL中的天作之合? 當Cloudera發布了Impala的測試版之后,情況發生了改變。Zoosk簽約成為早期用戶,而且Lam說查詢引擎的性能使得對原始Hadoop數據的分析更為可行。 例如,他說在與Parquet的結合中,Zoosk于2015年中期將一種針對Hadoop的柱狀存儲格式加入其大數據架構,Impala能夠在網站用戶交互中在八秒內執行一項典型查詢。通過對比,如果單獨使用Hive或是將Hive和Parquet結合使用,同樣的查詢分別會花費八分鐘和六分鐘。更快的速度同樣能夠支持額外更先進的應用程序,特別是行為匹配,這旨在根據Zoosk用戶對網站的使用情況來預測可能的匹配。 Zoosk堅持在ETL上使用Hive,然而為了處理每天從網站抓取的數百萬數據記錄,集群中信息的輸入量已經達到大約200TB。“Impala可以提供很快的速度,但是如果你不加小心的話,它是不可預測的,”Lam說,而使用Hive則能夠保證更容易地完成一項工作。” Impala仍然缺少某些標準SQL功能,包括支持擴展標記語言和JavaScript Object Notation函數以及類似映射和數組的非數值類型。“但是這一差距正逐漸縮小,”Lam說,他如今在Facebook工作。“對于大部分分析用例,你是能夠獲得通過的。”
這同樣適用于Apache Spark處理引擎的Spark SQL模塊,Benny Blum說,他是Sellpoints公司產品和數據部門的副總,這是一家位于加利福尼亞州Emeryville的在線營銷和廣告公司,其對ETL的處理使用的就是Spark SQL。 Blum說:“如今有些事情我無法用Spark SQL來完成,隨著開發工作的進行,你肯定認為你處在一種語言的前沿。”但另一方面,他指出Sellpoints所能看到的用Spark SQL的查詢速度遠遠高于六至八個月之前的水平,”這要得益于對SQL技術的改進以及公司對于Spark整體更為有效的利用。