這個版本是 Structured Streaming 的一個重要里程碑,由於其終於能夠正式在生產環境中使用,實驗標籤(experimental tag)已經被移除。在流系統中支持對任意狀態進行操做;Apache Kafka 0.10 的 streaming 和 batch API支持讀和寫操做。除了在 SparkR, MLlib 和 GraphX 裏面添加新功能外,該版本更多的工做在系統的可用性(usability)、穩定性(stability)以及代碼的潤色(polish)並解決了超過 1100 個tickets。html
這篇文章中將詳細介紹這些新特性,包括:算法
- Structured Streaming的生產環境支持已經就緒;
- 擴展 SQL 的功能;
- R 中引入了新的分佈式機器學習算法;
- MLlib 和 GraphX 中添加了新的算法
Structured Streaming
Structured Streaming 是從 Spark 2.0 開始引入的,其提供了高層次的API來構建流應用程序;目的是提供一種簡單的方式來構建端到端的流應用程序(end-to-end streaming applications),提供了一致性保證和容錯方式。apache
從 Spark 2.2.0 開始,Structured Streaming 已經爲生產環境的支持準備就緒,除了移除了實驗性標籤,還包括了一些高層次的變化,好比:json
- Kafka Source and Sink: Apache Kafka 0.10 的 streaming 和 batch API支持讀和寫操做;
- Kafka Improvements: Kafka 到 Kafka 流操做中的producer 支持緩存以實現低延遲;
- Additional Stateful APIs:
[flat]MapGroupsWithState
操做支持複雜的狀態處理以及超時處理;
- Run Once Triggers:詳情:Running Streaming Jobs Once a Day For 10x Cost Savings
SQL 和 Core APIs
自從 Spark 2.0 發佈,Spark 已經成爲大數據領域中功能最豐富而且符合標準的SQL查詢引擎之一。它能夠鏈接各類數據源,而且能夠在這些數據上執行 SQL-2003 標準語句,包括分析函數以及子查詢。Spark 2.2 還添加了許多 SQL 新功能,包括:緩存
- API 更新: 統一了數據源和hive serde表的
CREATE TABLE
語法;SQL查詢支持廣播提示(broadcast hints )好比BROADCAST, BROADCASTJOIN, 以及 MAPJOIN;
- 整體性能和穩定性:
- filter、join、aggregate、project 以及 limit/sample 操做支持基於成本優化器的基數統計(Cost-based optimizer cardinality estimation);
- 使用星型啓發式(star-schema heuristics)來提高 TPC-DS 性能;
- CSV 和 JSON 文件 listing/IO 性能提高;
- HiveUDAFFunction 支持部分集合;
- 引入基於JVM對象的聚合運算符
- 其餘值得關注的改變:
- 支持解析多行的JSON 和 CSV 文件
- 分析分區表的命令
MLlib 和 SparkR
Spark 2.2.0 的最後一大變化主要集中在高級分析,MLlib 和 GraphX 添加了如下的新算法:app
- 局部敏感哈希(Locality Sensitive Hashing)
- 多級邏輯迴歸(Multiclass Logistic Regression)
- 個性化PageRank(Personalized PageRank)
Spark 2.2.0還在 SparkR 中添加了如下分佈式算法:dom
- 交替最小二乘(ALS,Alternating Least Squares )
- 保序迴歸(Isotonic Regression)
- 多層感知分類器(Multilayer Perceptron Classifier)
- 隨機森林(Random Forest)
- 高斯混合模型(Gaussian Mixture Model)
- 線性判別式分析(Linear Discriminant Analysis, LDA)
- 多級邏輯迴歸(Multiclass Logistic Regression)
- 梯度提高樹(Gradient Boosted Trees)
- Structured Streaming API 支持 R 語言
- R 中支持 to_json, from_json
- 支持Multi-column approxQuantile
隨着這些算法的增長,SparkR已經成爲 R 中最全面的分佈式機器學習庫。機器學習
該文轉載自 https://www.iteblog.com/archives/2194.html分佈式
英文原文參考 https://databricks.com/blog/2017/07/11/introducing-apache-spark-2-2.html函數