真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

spark2.0新特性的示例分析

本篇文章為大家展示了spark2.0新特性的示例分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

目前成都創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、貢覺網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

使用:

離線計算:數(shù)據(jù)源大多來自hdfs(hive),所以sql使用的非常多,幾乎每個離線計算作業(yè)都會用到hivecontext或sqlcontext

實時計算:streaming模塊

圖計算在企業(yè)里用的很少,需求少

數(shù)據(jù)挖掘包mllib的使用比圖計算略多,但里面的算法不是很好用,目前需求少

新特性:

1,用sparksession實現(xiàn)hivecontext和sqlcontext統(tǒng)一

2,whole-stage code generation,大幅提高計算性能,因為把物理計劃變成硬編碼,每秒處理的sql中的數(shù)據(jù)量增加十倍,即對物理執(zhí)行的多次調(diào)用轉(zhuǎn)化為代碼for循環(huán),蕾絲hardcode方式,減少執(zhí)行的函數(shù)調(diào)用次數(shù),當(dāng)數(shù)據(jù)記錄多時,這個調(diào)用次數(shù)時很大的。

3,合并dataframe和datasets,1.6的dataset包含了dataframe的功能,這樣兩者存在很大冗余,所以2.0將兩者統(tǒng)一,保留dataset api,把dataframe表示為dataset[Row],即dataset的子集。dataframe是sql查詢結(jié)果rdd的抽象類,相當(dāng)于java里的resultset。

4,結(jié)構(gòu)化流計算,sparkstreaming是把流計算看成一個一個的離線計算來完成流計算,提供一套dstream的流api,相比其他的流計算,sparkstreaming的優(yōu)點是容錯行和吞吐量上有優(yōu)勢,在2.0以前的版本,用戶在使用時,如果有流計算,又有離線計算,就需要兩套api去編寫程序,一套是rddapi,一套是dstream api,而且dstream api在易用性上遠(yuǎn)不如sql或dataframe。為了真正將流計算和離線計算在編程api上統(tǒng)一,同時也讓streaming作業(yè)能夠享受dataframe/dataset上所帶來的優(yōu)勢:性能提升和API易用,于是提出了structed streaming,最后我們只需要基于dataframe/dataset可以開發(fā)離線計算和流計算的程序,很容易使得spark在api跟業(yè)界所說的dataflow來統(tǒng)一離線計算和流計算效果一樣。比如在做batch聚合時我們可以寫成下面代碼:

logs = ctx.read.format("json").open("s3://logs")

logs.groupBy(logs.user_id).agg(sum(logs.time)).write.format("jdbc").save("jdbc:MySQL//...")

那么對于流計算時,我們僅僅是調(diào)用了dataframe/dataset的不同函數(shù)代碼,如下:

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優(yōu)化,增加了以前很多不支持的sql語句

6,采用vectorized Parquet decoder讀取parquet上數(shù)據(jù),以前是一行一行的讀取,然后處理,現(xiàn)在改為一次讀取4096行記錄,不需要沒處理一行紀(jì)錄去調(diào)用一次parquet獲取記錄的方法,而是改為一批去調(diào)用一次(spark-12854) 。加上parquet本身是列存儲,這個優(yōu)化使得parquet讀取速度提高三倍

采用radix sort提高sort的性能(spark-14724)。在某些情況下排序性能可以提高10~20倍

使用vectorizedhashmap來代替java的hashmap加速groupby的執(zhí)行

將hive中的window函數(shù)用native spark window實現(xiàn),因為native spark window在內(nèi)存管理上有優(yōu)勢

避免復(fù)雜語句中的邏輯相同部分在執(zhí)行時重復(fù)計算

壓縮算法默認(rèn)使用lz4

mllib里的計算用dataframe-based api代替以前的rdd計算邏輯

提供更多的r語言算法

使用scala-2.11編譯運行

在和舊版本的兼容方面,將hive語句解析以及語法移動到core里,在沒有hive原數(shù)據(jù)庫和hive依賴包時,我們可以像以前版本使用標(biāo)準(zhǔn)sql一樣去使用hivesql語句。

上述內(nèi)容就是spark2.0新特性的示例分析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁題目:spark2.0新特性的示例分析
路徑分享:http://weahome.cn/article/gieojj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部