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——

Tags: