您好,登錄后才能下訂單哦!
本篇文章為大家展示了spark2.0新特性的示例分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
使用:
離線計算:數據源大多來自hdfs(hive),所以sql使用的非常多,幾乎每個離線計算作業都會用到hivecontext或sqlcontext
實時計算:streaming模塊
圖計算在企業里用的很少,需求少
數據挖掘包mllib的使用比圖計算略多,但里面的算法不是很好用,目前需求少
新特性:
1,用sparksession實現hivecontext和sqlcontext統一
2,whole-stage code generation,大幅提高計算性能,因為把物理計劃變成硬編碼,每秒處理的sql中的數據量增加十倍,即對物理執行的多次調用轉化為代碼for循環,蕾絲hardcode方式,減少執行的函數調用次數,當數據記錄多時,這個調用次數時很大的。
3,合并dataframe和datasets,1.6的dataset包含了dataframe的功能,這樣兩者存在很大冗余,所以2.0將兩者統一,保留dataset api,把dataframe表示為dataset[Row],即dataset的子集。dataframe是sql查詢結果rdd的抽象類,相當于java里的resultset。
4,結構化流計算,sparkstreaming是把流計算看成一個一個的離線計算來完成流計算,提供一套dstream的流api,相比其他的流計算,sparkstreaming的優點是容錯行和吞吐量上有優勢,在2.0以前的版本,用戶在使用時,如果有流計算,又有離線計算,就需要兩套api去編寫程序,一套是rddapi,一套是dstream api,而且dstream api在易用性上遠不如sql或dataframe。為了真正將流計算和離線計算在編程api上統一,同時也讓streaming作業能夠享受dataframe/dataset上所帶來的優勢:性能提升和API易用,于是提出了structed streaming,最后我們只需要基于dataframe/dataset可以開發離線計算和流計算的程序,很容易使得spark在api跟業界所說的dataflow來統一離線計算和流計算效果一樣。比如在做batch聚合時我們可以寫成下面代碼:
logs = ctx.read.format("json").open("s3://logs")
logs.groupBy(logs.user_id).agg(sum(logs.time)).write.format("jdbc").save("jdbc:mysql//...")
那么對于流計算時,我們僅僅是調用了dataframe/dataset的不同函數代碼,如下:
logs = ctx.read.format("json").stream("s3://logs")
logs.groupBy(logs.user_id).agg(sum(logs.time)).write.format("jdbc").stream("jdbc:mysql//...")
5,sql優化,增加了以前很多不支持的sql語句
6,采用vectorized Parquet decoder讀取parquet上數據,以前是一行一行的讀取,然后處理,現在改為一次讀取4096行記錄,不需要沒處理一行紀錄去調用一次parquet獲取記錄的方法,而是改為一批去調用一次(spark-12854) 。加上parquet本身是列存儲,這個優化使得parquet讀取速度提高三倍
采用radix sort提高sort的性能(spark-14724)。在某些情況下排序性能可以提高10~20倍
使用vectorizedhashmap來代替java的hashmap加速groupby的執行
將hive中的window函數用native spark window實現,因為native spark window在內存管理上有優勢
避免復雜語句中的邏輯相同部分在執行時重復計算
壓縮算法默認使用lz4
mllib里的計算用dataframe-based api代替以前的rdd計算邏輯
提供更多的r語言算法
使用scala-2.11編譯運行
在和舊版本的兼容方面,將hive語句解析以及語法移動到core里,在沒有hive原數據庫和hive依賴包時,我們可以像以前版本使用標準sql一樣去使用hivesql語句。
上述內容就是spark2.0新特性的示例分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。