Spark發布1.3.0版本

jopen 9年前發布 | 28K 次閱讀 Spark

原文  http://www.infoq.com/cn/news/2015/03/spark-new-version-release


3月13日, Spark 1.3.0版本與我們如約而至 。這是Spark 1.X發布計劃中的第四次發布,距離1.2版本發布約三個月時間。據Spark官方網站報道,此次發布是有史以來最大的一次發布,共有174位開發者為代碼庫做出貢獻,提交次數超過1000次。

此次版本發布的最大亮點是新引入的DataFrame API。對于結構型的DataSet,它提供了更方便更強大的操作運算。事實上,我們可以簡單地將DataFrame看做是對RDD的一個封裝或者增強, 使得Spark能夠更好地應對諸如數據表、JSON數據等結構型數據樣式(Schema),而不是傳統意義上多數語言提供的集合數據結構。在一個數據分析 平臺中增加對DataFrame的支持,其實也是題中應有之義。諸如R語言、Python的數據分析包pandas都支持對Data Frame數據結構的支持。事實上,Spark DataFrame的設計靈感正是基于R與Pandas。

Databricks的 博客 在今年2月就已經介紹了Spark新的DataFrame API。文中提到了新的DataFrames API的使用方法,支持的數據格式與數據源,對機器學習的支持以及性能測評等。文中還提到與性能相關的實現機制:

與R/Python中data frame使用的eager方式不同,Spark中的DataFrames執行會被查詢優化器自動優化。在DataFrame上的計算開始之前,Catalyst優化器會編譯操作,這將把DataFrame構建成物理計劃來執行。

由于Catalyst進行了兩種類型的優化:邏輯優化與物理優化(生成JVM bytecode),因而相較于RDD而言,DataFrame有了更好的性能表現。性能對比如下圖所示:

Spark發布1.3.0版本

Spark的官方網站已經給出了 DataFrame API的編程指導 。DataFrame的Entry Point為Spark SQL的SQLContext,它可以通過SparkContext對象來創建。如果希望DataFrame與RDD互操作,則可以在Scala中引入隱 式裝換,完成將RDD轉換為DataFrame。由于DataFrame提供了許多Spark SQL支持的功能,例如select操作,因此,它被放到Spark SQL組件中,而不是作為另一種RDD放到Spark Core中。

在Spark 1.3.0版本中,除了DataFrame之外,還值得關注的一點是Spark SQL成為了正式版本,這意味著它將更加的穩定,更加的全面。或許,是時候從HIVE轉向Spark SQL了。根據我們的項目經驗,代碼庫從HIVE向Spark SQL的遷移還是比較容易的,畢竟二者的SQL語法非常接近。官方文檔也宣稱它完全向后兼容HiveQL方言。當然,如果你還在使用Shark,就更有必 要將其升級到Spark SQL。

對于其他組件,如Spark ML/MLlib、Spark Streaming和GraphX,最新版本都有各種程度的增強。由于目前Spark的版本發布是定期的三個月周期發布,因此除了每次發布版本的里程碑特 性外,其余特性可能都是對現有組件的增強,尤其可能是增加新的算法支持(如機器學習中對LDA的支持)或者對第三方工具的支持(如Streaming中對 Kafka的Python支持)。Spark社區還會在發布版本之前對將要發布的特性進行投票,這或許是非常好的開源產品管理實踐。

若需了解最新發布的Spark 1.3.0的更多內容,可以訪問 Spark官方網站的發布公告

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!