Apache Spark第一版發(fā)布時隔兩年后,Databricks公布了基于上游分支2.0.0-preview的Apache Spark 2.0技術(shù)預(yù)覽版。該預(yù)覽版在穩(wěn)定性和API方面均不適合用于生產(chǎn)環(huán)境,主要是為了在正式上市前收集來及社區(qū)的反饋。
此次發(fā)布的新版主要針對社區(qū)反饋進一步完善了各種功能,根據(jù)Spark的開發(fā)計劃,主要改進分為兩方面。
SQL是基于Apache Spark的應(yīng)用程序最常用的接口之一。Spark 2.0可以支持全部的99個TPC-DS查詢,這些查詢大部分都基于SQL:2003規(guī)范。這些改進有助于在對應(yīng)用程序堆棧進行最少量重寫的情況下將現(xiàn)有數(shù)據(jù)負載移植至Spark后端。
第二方面改進主要是編程API,同時在這個新版中也更重視機器學(xué)習(xí)。spark.mllib程序包已經(jīng)被全新的spark.ml程序包所取代,后者更加側(cè)重于基于管線的API,這項技術(shù)源自DataFrames。機器學(xué)習(xí)管線和模型現(xiàn)已能夠持久保存,Spark所支持的所有語言均支持這一特性。同時R已經(jīng)可以支持K-Means、Generalized Linear Models(GLM)、樸素貝葉斯和Survival Regression。
借助新增的Datasets類,DataFrames和Datasets已實現(xiàn)了統(tǒng)一,可支持Scala和Java編程語言,同時也可充當(dāng)結(jié)構(gòu)流(Structured streaming)的抽象。不支持編譯時類型安全(Compile time type safety)的語言暫時還無法做到這一點,此時只能使用DataFrames作為主要抽象。SQLContext和HiveContext已被統(tǒng)一的SparkSession所取代。新增的Accumulator API具有比基本類型更簡單的類型層級,可支持對基本類型進行專門化(Specialization)。老的API已被棄用,但為了實現(xiàn)向后兼容性依然包含在新版中。
新發(fā)布的結(jié)構(gòu)化流API主要可用于在不增加復(fù)雜性的前提下管理流數(shù)據(jù)集,借此程序員和現(xiàn)有機器學(xué)習(xí)算法將可以處理批量加載的數(shù)據(jù)集。在第二代Tungsten引擎的幫助下,性能也有所增強,執(zhí)行速度最高可提升10倍。
該技術(shù)預(yù)覽版已經(jīng)發(fā)布至DataBricks。
查看英文原文:Apache Spark 2.0 Technical Preview