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