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