[SQL]spark sql 直接查詢hive或impala中的數據


SparkSQL結合SparkStreaming,使用SQL完成實時計算中的數據統計 – lxw的大數據田地
http://lxw1234.com/archives/2015/11/552.htm

Flume+Kafka+SparkStreaming已經發展為一個比較成熟的實時日志收集與計算架構,利用Kafka,即可以支持將用于離線分析的數據流到HDFS,又可以同時支撐多個消費者實時消費數據,包括SparkStreaming。然而,在SparkStreaming程序中如果有復雜業務邏輯的統計,使用scala代碼實現起來比較困難,也不易于別人理解。但如果在SparkSteaming中也使用SQL來做統計分析,是不是就簡單的多呢?

本文介紹將SparkSQL與SparkStreaming結合起來,使用SQL完成實時的日志數據統計。
SparkStreaming程序以yarn-cluster模式運行在YARN上,不單獨部署Spark集群。


簡單之美 | Spark-1.3.1與Hive整合實現查詢分析
http://shiyanjun.cn/archives/1113.html
總結

根據上面我們實踐的整合Spark+Hive,在執行復雜統計分析時,完全可以使用Spark SQL來替代Hive,至少會提高幾倍的速度,對于一些基于Hive統計應用,可能每天晚上要執行6個小時以上的統計計算,導致第二天結果數據都無法出來,如果統計需求再次增加,可能時間還會更長。除了對Hive查詢語句進行優化之外,應該說優化空間不大,所以這個時候可以考慮使用Spark平臺來實現統計分析,而且,Spark集群可以線性擴展,對于一些調優也更容易一些。

這樣我們可以直接在Spark SQL Shell上輸入Hive查詢語句就可以執行查詢分析計算。


解讀2015之Spark篇:新生態系統的形成
http://www.infoq.com/cn/articles/2015-Review-Spark
DataFrame和SQL API

Spark從API的角度看,可以分為兩大類:

類似于Python的Pandas和R語言的DataFrame API,用戶可以使用Scala/Java/Python/R四種語言調用這個API處理數據;
SQL語言API。又分為兩種:一個是普通的Spark SQL,一種是Hive SQL。
雖然API不同,但是背后解析出來的算子是一樣的,DataFrame的各種算子其實就是各種SQL的語法。Spark在SQL語法的支持越來越豐富的同時內置的SQL函數得到了很大的增強,目前已經有超過100個這樣的常用函數(string, math, date, time, type conversion, condition),可以說最常見的SQL內置函數都有了。

作為一個類SQL的分析工具,聚合函數是非常核心的。Spark 1.5和1.6在聚合函數上都有很大改進:實現了一個新的聚合函數接口,支持了一些build-in的聚合函數(例如max/min/count/sum/avg/first/corr/stddev/variance/skewness/kurtosis以及一些窗口函數等),同時基于新接口實現了相應的UDAF接口。新的聚合函數接口是AggregateFunction,有兩種具體的實現:ImperativeAggregate和DeclarativeAggregate。ImperativeAggregate類型的聚合操作就是通過用戶定義三個動作 initialize/update/merge的邏輯來實現聚合的;而DeclarativeAggregate則是通過指定initialValues/updateExpressions/mergeExpressions這三個表達式然后通過代碼生成的方式來做聚合的操作。這兩種方式各有利弊,一般來說代碼生成效率更高,但是像variance/stddev/skewness/kurtosis這樣的多個表達式需要依賴同一個中間表達式的場景下,代碼生成的執行路徑由于不能共享中間的結果,從而導致其不如ImperativeAggregate效率更高,所以在Spark內部的實現中這幾個聚合函數也是通過ImperativeAggregate來實現的。


spark sql根本使用方法介紹 - SQL
http://www.myexception.cn/sql/2043136.html
通過spark sql 直接查詢hive或impala中的數據


spark SQL和hive到底什么關系_百度知道
http://zhidao.baidu.com/link?url=49EH5W3f2KKDqhcnuB2CtP3hN03KJMIpDVMUYHl564UiB9uix5l7zZ4KeX1i2hB8CGwnoHkbokNk2E-QBLpD5XSghr2pdTepFby6tgQXgjK
歷史上存在的原理,以前都是使用hive來構建數據倉庫,所以存在大量對hive所管理的數據查詢的需求。而hive、shark、sparlSQL都可以進行hive的數據查詢。shark是使用了hive的sql語法解析器和優化器,修改了執行器,使之物理執行過程是跑在spark上;而sparkSQL是使用了自身的語法解析器、優化器和執行器,同時sparkSQL還擴展了接口,不單單支持hive數據的查詢,可以進行多種數據源的數據查詢。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容