Spark2.1新特性

Spark 2.1.0是2.x分支中的第二個重要的發佈版本(第一個是2.0.x),在該版本中,structured streaming有重大改進,增加了event mark watermark機制和對kafka 0.10.0的支持等特性,爲其用於生產環境又邁進一步。除此之外,Spark其他重大改進集中在易用性、穩定性和改進等方面,解決了1200多個ticket(包括新功能、bug fix以及性能改進等)。


下面是Spark 2.1.0中的主要改動:

1. Spark Core和Spark SQL

spark官方發佈新版本時,一般將Spark Core和Spark SQL放在一起,可見兩者的融合越來越緊,Spark SQL中的DataFrame/Dataset會逐步取代RDD API, 成爲Spark中最常用的API。如今,Spark生態系統中的MLLib和Spark Streaming正逐步朝DataFrame/Dataset API方向演進。

(1)API 更新

  • SPARK-17864:Data type API趨於穩定,即DataFrame和Dataset可用於生產環境,且後續會載保證向後兼容性的前提下,進行演化;

  • SPARK-18351:新增from_json和to_json,允許json數據和Struct對象(DataFrame的核心數據結構)之間相互轉換;

  • SPARK-16700:在pyspark中,增加對dict的支持。

(2)性能與穩定性

  • SPARK-17861:改進Spark SQL中的對partition的處理方式。在metastore中緩存partition元信息以解決冷啓動和查詢下推等問題;

  • SPARK-16523:優化group-by聚集操作的性能。通過引入基於行的hashmap,解決寬數據(列數非常多)的聚集性能低下問題。

2. Structured Streaming

Structured Streaining是下一代Spark steaming,基於Dataframe/Dataset API開發的。

(1)API更新

  • SPARK-17346:支持kafka 0.10.0。支持spark streaming已經支持kafka 0.8.0,0.9.0以及0.10.0,分別通過不同的java包實現(由於kafka 0.8.0和0.9.0客戶端是兼容的,所以共用0.8.0實現)

  • SPARK-18124:引入watermark機制解決數據延遲到達問題,可參考googld的MillWheel論文“MillWheel: Fault-Tolerant Stream Processing at Internet Scale”,原理如下:



  • SPARK-18192:支持全部數據存儲格式,包括parquet、csv、 json、 text等;

(2)穩定性

  • SPARK-17267:支持long-running的strcutured streaming應用,增加log回滾和清理、舊meta data的清理等功能,進而可以讓strcutured streaming應用像服務一樣永不停止的運行。

3. MLlib

(1) API 更新

  • SPARK-5992: Locality Sensitive Hashing實現

  • SPARK-7159: 基於DataFrame API實現Multiclass Logistic Regression

  • SPARK-16000: ML持久化:讓模型加載邏輯與spark 1.x兼容,並基於DataFrame API實現了模型保存部分的邏輯

(2)性能和穩定性

  • SPARK-17748:當feature數目小於4096時,LinearRegression性能更高;

  • SPARK-16719: RandomForest算法的改進:每輪迭代時減少需相互通信的樹數目

4. SparkR和GraphX


Spark 2.1.0是里程碑的一個版本,其穩定性和性能均有極大提升,建議在公司內部發佈一個試用版,一旦經測試達到生產環境要求(主要是穩定性),可馬上開始在公司內部推廣使用。

轉發自:http://mp.weixin.qq.com/s/9-8ms-uGINrwxKSan7tWAA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章