隨著Facebook開源了最近發佈的Presto,已經非常擁擠的SQL in Hadoop市場變得更加錯綜複雜。 一些開源工具正在努力獲得開發者的注意:Hortonworks 圍繞著Hive創建的Stinger、Apache Drill、Apache Tajo、Cloudera的Impala、 Salesforce的Phoenix(用於HBase)以及現在的Facebook Presto。
已經在產品環境中使用Hadoop的組織需要互動式的SQL查詢支援,同時能夠與已有的BI工具進行平滑的集成。 來自于eBay的Vijay Madhavan在他的博客Hadoop場景中的SQL一文中聲稱:
現在大部分基於Map-Reduce的分析系統能夠在非互動式和批量SLA領域良好地工作,包括當前版本的Hive、Pig、Cascading。 許多產品正在努力通過提供互動式「SQL in Hadoop」解決方案支援即時互動式SLA。
SQL in Hadoop解決方案的用例包括支援互動式ad-hoc查詢;支援使用MicroStrategy 或者Tableau 這樣的BI系統進行報表/視覺化;支援多來源(multi-source)資料, 例如HDFS中的行為型資料必須被連接到RDBMS或者其他來源中的人口統計資料。
很多這樣的SQL in Hadoop解決方案在某些方面有共同點:
在元資料層面上,好像HCatalog/Hive Metastore將它們自己制定成了跨不同資料來源管理模式事實上(de-facto)的標準。
然後有某些資料格式,例如Parquet和ORC,它們對於選擇的工作負載而言正在變得越來越流行,同時在自然環境中使用的也越來越廣泛。
大部分解決方案好像都支援各種各樣的ANSI SQL(不同的版本:1992、1999、2003)。
上面幾點可以説明使用者在不同的SQL in Hadoop解決方案之間遷移,不會有很多令人頭痛的問題。 但是也有一些值得注意的區別,如下所示:
解決方案中的一部分是由Apache支援的,同時也伴隨著社區的支援(Stinger、Drill、Tajo);其他的則是由單獨的實體組織擁有(Impala、Phoenix、Presto)。
另外,有一部分解決方案在資料來源方面有一些限制,它們能夠查詢Hadoop生態系統;而另一些從架構的角度看更加靈活,可以查詢關聯式資料庫和NoSQL資料存儲(Presto、Drill)。
另一點是允許在資料上執行的操作不同:有一些是純(分散式)查詢引擎,而另一些則允許執行更新操作。
在過去的10到18個月中,有越來越多的人和商業實體已經決定嘗試一下,對存儲在Hadoop中的資料實現低延遲、ad-hoc SQL訪問。 無論怎樣,從長遠來看由於重疊的用例和環境喜好的不同有適合多種SQL in Hadoop解決方案生存的空間。