【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