spark 發(fā)布 2.2.0版本
- Apache Spark 2.2.0是2.x分支上的第三次主版本發(fā)布,其他兩個版本分別2.0.x,2.1.x兩個主版本以及下屬的分支版本。這次發(fā)布spark移除了Structured Streaming的實驗標簽。也就是說,這次發(fā)布的版本的焦點在于其易用性、穩(wěn)定性,并完善、解決了超過1100個問題(目前來看,實際上有1146個問題,具體內(nèi)容可以在spark的 jira上看到)。
- 這次版本主要對一下幾個模塊著做了修改
- Core and Spark SQL
- Structured Streaming
- MLlib
- SparkR
- GraphX
- Deprecations
- Changes of behavior
- Known Issues
- Credits
Core and Spark SQL(內(nèi)核和spark SQL)
- API更新
- SPARK-19107:支持通過DataFrameWriter和catalog來創(chuàng)建hive表
- DataFrameWriter是spark.sql下的一個接口,主要用于將數(shù)據(jù)集寫到外部存儲系統(tǒng)中
- Catalog同樣是spark.sql的一個接口,用于提供標準API訪問spark SQL中的元數(shù)據(jù)
- SPARK-13721:支持hive的LATERAL VIEW OUTER explode()功能
- LATERAL VIEW OUTER explode()是hive所提供的一行轉(zhuǎn)多列的方法(詳情 現(xiàn)在這里挖個坑,找個時間來添一下)
- SPARK-18885:針對數(shù)據(jù)源和hive的正/反序列化數(shù)據(jù)的同一建表語法
- SPARK-16475:對sql查詢中的 BROADCAST, BROADCASTJOIN, and MAPJOIN增加廣播提示功能
- SPARK-18350:支持本地回話時區(qū)(為了解決機器處于不同時區(qū)、或者不同用戶處于不同時區(qū)所產(chǎn)生的時間不同問題)
- SPARK-19261:支持擴展的sql語法alter table table_name add cloumns
- SPARK-20420:增加external catalog時間
- external catalog
- SPARK-18127:增加spark的鉤子和擴展點
- 這是Srinath提出的一個改進點,其本意是希望通過自定義spark會話的方式來來實現(xiàn)以下目標:增加自定義的分析規(guī)則,如實現(xiàn)遞歸操作;增加自己的分析檢查,如對數(shù)據(jù)源做特殊的檢查,在發(fā)現(xiàn)問題的時候可以提前發(fā)現(xiàn);增加自定義優(yōu)化等
- SPARK-20576:在Dataset/DataFrame中支持通用的提示函數(shù)
- SPARK-17203:數(shù)據(jù)源操作不應(yīng)該區(qū)分大小寫
- SPARK-19139:為spark增加AES基礎(chǔ)認證機制
- SPARK-19107:支持通過DataFrameWriter和catalog來創(chuàng)建hive表
- 性能和穩(wěn)定
- 代價優(yōu)化器
- 針對filter,join,aggregate,project和limit/sample操作的評估基數(shù)
- 對join重排序進行優(yōu)化
- 對TPC-DS利用啟發(fā)式星型結(jié)構(gòu)進行優(yōu)化
- 引入一個基于聚合操作的jvm對象
- 部分聚合支持hive UDAF 函數(shù)
- 對CSV和JSON的文件列表/IO進行優(yōu)化
- 解決不可撤銷/不可殺死的任務(wù)耗盡系統(tǒng)資源的問題
- 拓撲結(jié)構(gòu)的塊復(fù)制問題
- 代價優(yōu)化器
- 其他值得注意的改變
- 支持解析多行JSON文件
- 支持解析多行CSV文件
- 支持分區(qū)表的表分析命令
- 在完成插入和創(chuàng)建hive表后丟棄階段字典和數(shù)據(jù)文件
- 視圖更加文健、標準而不需要大量的SQL擴展
- 支持從hive 2.0/2.1的模型倉庫中讀取數(shù)據(jù)
- 提供提交協(xié)議的RDD端口API
- 對定時調(diào)度任務(wù)增加黑名單列表
- 移除對hadoop 2.5和更早版本的支持
- 移除對java7的支持
Structured Streaming(結(jié)構(gòu)流)
- 常規(guī)應(yīng)用
- Structured Streaming(結(jié)構(gòu)流)的API現(xiàn)在屬于常規(guī)應(yīng)用,不再具有實驗標簽
- kafka 優(yōu)化
- 支持在流中或者批量從kafka中讀取/寫入數(shù)據(jù)
- 使用一個緩存的kafka生產(chǎn)者通過kafka sink向kafka寫入數(shù)據(jù)
- API更新
- 使用[flat]MapGroupWithState時支持復(fù)雜狀態(tài)執(zhí)行和超時
- 支持一次觸發(fā)器
- 其他不重要的改變
- 增加一個測試和基準的rate source(信率源)
- structtured streaming 編程指南
MLlib
- 基于data-frame的新算法API
- 線性SVC
- SVC: support vector classification(支持向量聚類算法)
- 基于data-frame API的卡方檢驗
- 基于data-frame API的相關(guān)分析
- 基于特征轉(zhuǎn)化的確實值處理
- 廣義線性模型增加Tweedie分布
- 頻繁項集挖掘中的FPGrowth算法和關(guān)聯(lián)規(guī)則
- 線性SVC
- 已存在的算法中增加python和R的api
- Gradient Boosted Trees(梯度提升樹)
- 二分k均值
- 局部敏感哈希 參考
- pySpark的分布式主成分分析和矩陣奇異值分解
- 主要bug修復(fù)
- DistributedLDAModel.logPrior計算準確率修復(fù)
- EMLDAOptimizer因類型匹配錯誤失敗(由GraphX checkpointing的bug導(dǎo)致)
- 修復(fù)在二項式廣義線性模型中計算信息準則錯誤問題
- AIC :AIC信息準則即Akaike information criterion,是衡量統(tǒng)計模型擬合優(yōu)良性的一種標準,由于它為日本統(tǒng)計學(xué)家赤池弘次創(chuàng)立和發(fā)展的, 因此又稱赤池信息量準則
- 在某些輸入數(shù)據(jù)中訓(xùn)練二分K均值模型報"java.util.NoSuchElementException: key not found"錯誤
- pyspark.ml.Pipeline 在多線程模式使用時會出問題
- 框約束的邏輯回歸
- MLlib編程指南
SparkR
- SparkR在2.2.0版本焦點主要集中在:增加了大量現(xiàn)存Spark SQL特性的支持
*主要特征- Structured Streaming API支持R語言
- 完整的catalogAPI可以支持R語言
- to_json,from_json的列函數(shù)
- 合并dataFrame 和 合并列
- 支持dataFrame的checkpointing
- R中approxQuantile函數(shù)支持多列計算
- SparkR編程指南
GraphX圖計算
- bug修復(fù)
- 圖計算接收器從PageRank中獲取到了不準確的結(jié)果
- 圖頂點Rdd/邊緣RDD做checkpoint操作時出現(xiàn)ClassCastException異常
- GraphX編程指南
不贊成
- python
- 放棄對python2.6的支持
- MLlib
- spark.ml LDA類不應(yīng)該在spark.mllib的API中暴露,在spark.ml.LDAModel中,不提倡oldLocalModel 和 getModel
- SparkR
- 不提倡創(chuàng)建外部表
方式改變
- MLlib
- 開發(fā)API ALS.train()使用默認參數(shù)0.1代替1.0,為了匹配常規(guī)算法API中的默認參數(shù)設(shè)置
- sparkR:
- 為SparkR的高斯矩陣模型增加對數(shù)似然估計,但是引入一個sparkR的模型不會持續(xù)兼容:高斯矩陣模型在SparkR 2.1中已經(jīng)被移除,可能不會在sparkR 2.2中重新引入。我們計劃在將來對其保持向后兼容。