1. 程式人生 > >Spark2.x 新特性

Spark2.x 新特性

引入 ant 版本 eight 執行 次數 調用 出了 afr

二、Spark2.x 介紹

2.1 Spark2.x 與 Spark1.x 關系

Spark2.x 引入了很多優秀特性,性能上有較大提升,API 更易用。在“編程統一”方面非常驚艷,實現了離線計算和流計算 API 的統一,實現了 Spark sql 和 Hive Sql 操作 API 的統一。Spark 2.x 基本上是基於 Spark 1.x 進行了更多的功能和模塊的擴展,及性能的提升。

2.2 Spark2.x 新特性

1). whole-stage code generation

大幅提高計算性能,因為把物理計劃變成硬編碼,每秒處理的 sql 中的數據量增加十倍,即對物理執行的多次調用轉化為代碼 for 循環,減少執行的函數調用次數,當數據記錄多時,這個調用次數時很大的。

2). sparksession 實現 hivecontext 和 sqlcontext 統一

Spark2.0 中引入了 SparkSession 的概念,它為用戶提供了一個統一的切入點來使用 Spark 的各項功能,用戶不但可以使用 DataFrame 和Dataset 的各種 API,學習 Spark2 的難度也會大大降低。

3). 統一 Scala 和 Java 中 DataFrames 和 Datasets 的 API。

它們都是提供給用戶使用,包括各類操作接口的 API,1.3 版本引入DataFrame,1.6版本引入Dataset,Spark2.0提供的功能是將二者統一,DataFrame 僅僅是 Dataset 的一個別名。有類型的方法(typed methods)(比如:map, filter, groupByKey)和無類型的方法(untyped methods)(比如:select, groupBy)目前在 Dataset 類上可用。同樣,新的 Dataset 接口也在 Structured Streaming中使用。因為編譯時類型安全(compile-time type-safety)在 Python 和 R 中並不是語言特性,所以Dataset的概念並不在這些語言中提供相應的 API。而 DataFrame 仍然作為這些語言的主要編程抽象。

4). Structured Streaming

Spark Streaming 是把流式計算看成一個一個的離線計算來完成流式計算,提供了一套 Dstream 的流 API,相比於其他的流式計算,Spark Streaming 的優點是容錯性和吞吐量上要有優勢,在 2.0以前的版本,用戶在使用時,如果有流計算,又有離線計算,就需要用二套 API 去編寫程序,一套是 RDD API,一套是 Dstream API。而且 Dstream API 在易用性上遠不如 SQL 或 DataFrame。

為了真正將流式計算和離線計算在編程 API 上統一,同時也讓 Streaming 作業能夠享受 DataFrame/Dataset 上所帶來的優勢:性能提升和 API 易用,於是提出了 Structured Streaming。最後我們只需要基於 DataFrame/Dataset 可以開發離線計算和流式計算的程序。

5). 其它特性

mllib 裏的計算用 DataFrame-based API 代替以前的 RDD 計算邏輯,提供更多的 R 語言算法,默認使用 Scala 2.11 編譯與運行。



null

Spark2.x 新特性