1. 程式人生 > >【Spark】Spark2.x版的新特性

【Spark】Spark2.x版的新特性

一、API

    1. 出現新的上下文介面:SparkSession,統一了SQLContext和HiveContext,並且為SparkSession開發了新的流式呼叫的configuration API

    2. 統一了DataFrame和DataSet。DataFrame相當於DataSet[Row],以及DataSet的增強聚合API

    3. 增強了累加器accumulator的功能,支援Web UI,便捷的API,效能更高

二、SQL

    1. 支援SQL2003標準

    2. 支援ansi-sql 和hive ql的sql parser(SQL解析器)

    3. 支援DDL,支援子查詢(in/not in 、 exists/ not exists)

三、效能

    1. 通過whole-stage-code generation(全流程程式碼生成)技術將SparkSQL和DataSet的效能提升了2~10倍。(在下一篇博文中會淺談全流程程式碼生成技術)

    2. 通過vectorization(向量化)技術提升parquet檔案的掃描吞吐量

    3. 提升orc檔案的讀寫效能

    4. 提升catalyst查詢優化器的效能

    5. 通過native實現方式提升視窗函式的效能

四、 Spark Streaming

    1. Structured Streaming在Spark2.0中是測試版,2.0之後是released版,它基於SparkSQL和Catalyst引擎構建,支援DataFrame風格的API進行流式計算。

    2. 基於DStream的API支援kafka0.10版本

五、Spark MLlib

    1.  基於DataFrame的API支援持久化儲存、載入模型、Pipeline,支援更多的演算法,支援向量和矩陣使用效能更高的序列化機制。

    2.  Spark R支援MLlib演算法,包括線性迴歸、樸素貝葉斯等

    3. 未來Spark MLlib將主要基於DataSet API來實現,基於RDD和API將轉為維護階段

六、Other

    1. 支援csv檔案

    2. 支援hive風格的bucket表

    3. 支援快取和程式執行的堆外記憶體管理

    4. 完全移除了對akka的依賴

    5. 使用Scala2.11代替了Scala2.10,要求基於Scala2.11版本進行開發,而不是Scala2.10

    6. Mesos粗粒度模式下,支援啟動多個Executor