Spark 1.6.x的新特性
Spark-1.6是Spark-2.0以前的最後一個版本。主要是三個大方面的改進:性能提高,新的 Dataset API 和數據科學功能的擴展。這是社區開發很是重要的一個里程碑。
1. 性能提高
根據 Apache Spark 官方 2015 年 Spark Survey,有 91% 的用戶想要提高 Spark 的性能。
Parquet 性能
自動化內存管理
流狀態管理速度提高 10Xjava
2. Dataset API
Spark 團隊引入了 DataFrames,新型Dataset API。python
3. 新的科學計算功能
機器學習管道持久性
新的算法和功能:
univariate and bivariate statistics
survival analysis
normal equation for least squares
bisecting K-Means clustering
online hypothesis testing
Latent Dirichlet Allocation (LDA) in ML Pipelines
R-like statistics for GLMs
feature interactions in R formula
instance weights for GLMs
univariate and bivariate statistics in DataFrames
LIBSVM data source
non-standard JSON data算法
Spark 1.5.x的新特性
一、DataFrame底層執行的性能優化(鎢絲計劃第一階段)
1.1 Spark本身來管理內存,而再也不依靠JVM管理內容。這樣就能夠避免JVM GC的性能開銷,而且可以控制OOM的問題。
1.2 Java對象直接使用內部的二進制格式存儲和計算,省去了序列化和反序列化的性能開銷,並且更加節省內存開銷。
1.3 完善了Shuffle階段的UnsafeShuffleManager,增長了很多新功能,優化shuffle性能。
1.4 默認使用code-gen,使用cache-aware算法,增強了join、aggregation、shuffle、sorting的性能,加強了window function的性能,性能比1.4.x版本提升數倍shell
二、DataFrame
2.1 實現了新的聚合函數接口,AggregateFunction2,而且提供了7個新的內置聚合函數。
2.2 實現了100多個新的expression function,例如unix_timestamp等,加強了對NaN的處理
2.3 支持鏈接不一樣版本的hive metastore
2.4 支持Parquet 1.7express
三、Spark Streaming:更完善的python支持、非實驗的Kafka Direct API等等。緩存
Spark 1.4.x的新特性
通過4個RC版本,Spark 1.4最終仍是趕在Spark Summit前發佈了,本文簡單談下本版本中那些很是重要的新feature和improvement.
SparkR就不細說了,於data scientists而言,簡直是望眼欲穿,千呼萬喚始出來........ 這顯然要用單獨一篇文章來講下 : )性能優化
Spark Core:
如今你們最關心什麼?性能和運維呀! 什麼最影響性能?必須shuffle呀!什麼是運維第一要務?必須是監控呀(就先不扯alert了)!1.4在這兩點都作足了功夫。 1.4中,Spark爲應用提供了REST API來獲取各類信息(jobs / stages / tasks / storage info),使用這個API搭建個本身的監控簡直是分分鐘的事情,不止於此,DAG如今也能可視化了,不清楚Spark的DAGScheduler怎麼運做的同窗,如今也能很是輕易地知道DAG細節了。再來講說shuffle, 你們都知道,從1.2開始sort-based shuffle已經成爲默認的shuffe策略了,基於sort的shuffle不須要同時打開不少文件,而且也能減小中間文件的生成,可是帶來的問題是在JVM的heap中留了大量的java對象,1.4開始,shuffle的map階段的輸出會被序列化,這會帶來兩個好處:一、spill到磁盤上的文件變小了 二、GC效率大增 ,有人又會說,序列化反序列化會產生額外的cpu開銷啊,事實上,shuffle過程每每都是IO密集型的操做,帶來的這點cpu開銷,是能夠接受。
你們期待的鎢絲計劃(Project Tungsten)也在1.4初露鋒芒,引入了新的shuffle manager 「UnsafeShuffleManager」, 來提供緩存友好的排序算法,及其它一些改進,目的是下降shuffle過程當中的內存使用量,而且加速排序過程。 鎢絲計劃一定會成爲接下來兩個版本(1.5,1.6)重點關注的地方。運維
Spark Streaming:
Streaming在這個版本中增長了新的UI, 簡直是Streaming用戶的福音啊,各類詳細信息一覽無餘。話說Spark中國峯會,TD當時坐我旁邊review這部分的code,悄悄對說我」this is awesome」。對了,這部分主要是由朱詩雄作的,雖然詩雄在峯會上放了我鴿子,但必須感謝他給咱們帶來了這麼好的特性!另外此版本也支持了0.8.2.x的Kafka版本。機器學習
Spark SQL(DataFrame)
支持老牌的ORCFile了,雖然比Parquet年輕,可是人家bug少啊 : ) 1.4提供了相似於Hive中的window function,仍是比較實用的。本次對於join的優化仍是比較給力的,特別是針對那種比較大的join,你們能夠體會下。JDBC Server的用戶確定很是開心了,由於終於有UI能夠看了呀。函數
Spark ML/MLlib
ML pipelines從alpha畢業了,你們對於ML pipelines的熱情還真的蠻高的啊。我對Personalized PageRank with GraphX卻是蠻感興趣的,與之相關的是recommendAll in matrix factorization model。 事實上大多數公司仍是會在Spark上實現本身的算法。
Spark 1.3新特性
Spark SQL脫離Alpha版本
在1.3版本中,Spark SQL正式脫離Alpha版本,提供了更好的SQL標準兼容。同時,Spark SQL數據源API亦實現了與新組件DataFrame的交互,容許用戶直接經過Hive表格、Parquet文件以及一些其餘數據源生成DataFrame。用戶能夠在同一個數據集上混合使用SQL和data frame操做符。新版本提供了從JDBC讀寫表格的能力,能夠更原生地支持Postgres、MySQL及其餘RDBMS系統。同時,該API還爲JDBC(或者其餘方式)鏈接的數據源生成輸出表格提供寫入支持。
內置支持Spark Packages
在2014年末,咱們着手爲Spark創建一個新的社區項目目錄站點——Spark Packages。當下,Spark Packages已經包含了開發者可使用的45個社區項目,包括數據源集成、測試工具以及教程。爲了更方便Spark用戶使用,在Spark 1.3中,用戶能夠直接將已發佈包導入Spark shell(或者擁有獨立flag的程序中)。
Spark Packages 還爲開發者創建了一個SBT插件來簡化包的發佈,併爲發佈包提供了自動地兼容性檢查。
在Spark Streaming中提供了更低等級的Kafka支持
從過去發佈的幾個版原本看,Kafka已經成爲Spark Streaming一個很是人氣的輸入源。Spark 1.3引入了一個新的Kakfa streaming source,它利用了Kafka的回放能力,在非預寫日誌配置下提供了一個更可靠的交付語義。同時,針對那些需求強一致性的應用程序,它還提供了實現了Exactly-Once Guarantees的原語。在Kafka的支持上,1.3版本還添加了一個Python API以及支持這個API的原語。
MLlib中的新算法Spark 1.3還提供了大量的新算法。其中,Latent Dirichlet Allocation(LDA)成爲了第一個出如今MLlib中的主題建模算法。在這以前,Spark的邏輯迴歸已經經過多元邏輯迴歸(multinomial logistic regression )支持多類分類(multiclass classification)。而在這個版本中,聚類再次被提高,Gaussian Mixture Models和 Power Iteration Clustering被引入。並經過FP-growth擴展了頻繁項集挖掘(FIM,Frequent Itemsets Mining)。最後,MLlib還爲Distributed Linear Algebra引入了有效的塊矩陣抽象。