Spark2.x新特性的介紹
- 2019 年 12 月 23 日
- 筆記
Spark Core&Spark SQL
API
dataframe與dataset統一,dataframe只是dataset[Row]的類型別名
SparkSession:統一SQLContext和HiveContext,新的上下文入口
為SparkSession開發的一種新的流式調用的configuration api
accumulator功能增強:便捷api、web ui支援、性能更高
dataset的增強聚合api
SQL
支援sql 2003標準
支援ansi-sql和hive ql的sql parser
支援ddl命令
支援子查詢:in/not in、exists/not exists
new feature(新特性)
支援csv文件
支援快取和程式運行的堆外記憶體管理
支援hive風格的bucket表
支援近似概要統計,包括近似分位數、布隆過濾器、最小略圖
性能
通過whole-stage code generation(全流程程式碼生成)技術將spark sql和dataset的性能提升2~10倍
通過vectorization(向量化)技術提升parquet文件的掃描吞吐量
提升orc文件的讀寫性能
提升catalyst查詢優化器的性能
通過native實現方式提升窗口函數的性能
對某些數據源進行自動文件合併
Spark MLlib
spark mllib未來將主要基於dataset api來實現,基於rdd的api轉為維護階段
基於dataframe的api,支援持久化保存和載入模型和pipeline
基於dataframe的api,支援更多演算法,包括二分kmeans、高斯混合、maxabsscaler等
spark R支援mllib演算法,包括線性回歸、樸素貝葉斯、kmeans、多元回歸等
pyspark支援更多mllib演算法,包括LDA、高斯混合、泛化線性回顧等
基於dataframe的api,向量和矩陣使用性能更高的序列化機制
Spark Streaming
發布測試版的structured streaming
基於spark sql和catalyst引擎構建
支援使用dataframe風格的api進行流式計算操作
catalyst引擎能夠對執行計划進行優化
基於dstream的api支援kafka 0.10版本
依賴管理、打包和操作
不再需要在生產環境部署時打包fat jar,可以使用provided風格
完全移除了對akka的依賴
mesos粗粒度模式下,支援啟動多個executor
支援kryo 3.0版本
使用scala 2.11替代了scala 2.10
移除的功能
bagel模組
對hadoop 2.1以及之前版本的支援
閉包序列化配置的支援
HTTPBroadcast支援
基於TTL模式的元數據清理支援
半私有的org.apache.spark.Logging的使用支援
SparkContext.metricsSystem API
與tachyon的面向block的整合支援
spark 1.x中標識為過期的所有api
python dataframe中返回rdd的方法
使用很少的streaming數據源支援:twitter、akka、MQTT、ZeroMQ
hash-based shuffle manager
standalone master的歷史數據支援功能
dataframe不再是一個類,而是dataset[Row]的類型別名
變化的機制
要求基於scala 2.11版本進行開發,而不是scala 2.10版本
SQL中的浮點類型,使用decimal類型來表示,而不是double類型
kryo版本升級到了3.0
java的flatMap和mapPartitions方法,從iterable類型轉變為iterator類型
java的countByKey返回<K,Long>類型,而不是<K,Object>類型
寫parquet文件時,summary文件默認不會寫了,需要開啟參數來啟用
spark mllib中,基於dataframe的api完全依賴於自己,不再依賴mllib包
過期的API
mesos的細粒度模式
java 7支援標識為過期,可能2.x未來版本會移除支援
python 2.6的支援
——END——

