Apache Spark是用於大規模分散式資料處理的開源統一分析引擎。在過去的幾年中,已成為最受歡迎的大資料處理工具之一。它涵蓋了廣泛的任務型別——從資料批處理和簡單的ETL(提取/轉換/載入)到流和機器學習。
由於Kotlin與Java的互操作性,Kotlin開發者已可以透過Java API使用Apache Spark。但是如此一來,就無法充分發揮Kotlin的潛力,而且通常這讓編碼變得不夠流暢。
今天,我們很高興地分享Apache Spark的Kotlin API的第一個預覽版。這個專案在Kotlin和Apache Spark之間增加了相容層。允許你使用熟悉的語言特性(例如資料類和lambda表示式)編寫符合習慣的Kotlin程式碼。
Kotlin for Apache Spark還根據部分特性擴充套件了現有的API。
withSpark和withCached函式
withSpark
是使用SparkSession的一種簡單而優雅的方法,它將自動為你在程式碼塊末尾呼叫spark.stop()
。 你可以向其傳遞執行Spark可能需要的引數,例如主位置,日誌級別或應用程式名稱。它還帶有一組方便的預設值,可在本地執行Spark。
這是計算行中字母出現次數的經典示例:
上述例子另一個有用的函式是withCached
。在其他API中,如果要將計算分配到多個路徑中,但只計算一次,則可以呼叫’cache’方法。但是會很快變得難以跟蹤,你必須記住要取消持久化快取的資料。否則可能會佔用比預期更多的記憶體,甚至完全破壞記憶體。 withCached
會為你跟蹤並持久化。
空安全
Kotlin for Spark在現有方法中新增了leftJoin
、rightJoin
和其他別名,這是從設計角度的空安全。
注意上述示例中的city?.coordinate
行。在這個右聯接中,城市可能為空。這會在其他JVM Spark API中引起NullPointerException
,並且追溯問題的根源非常困難。 Kotlin for Apache Spark會為你處理null安全問題,你可以方便地過濾出null結果。
支援什麼
Kotlin for Apache Spark的初始版本支援Apache Spark 3.0,其核心針對Scala 2.12進行了編譯。
其API涵蓋了建立最適合批處理ETL的自包含Spark應用程式所需的所有方法。
Kotlin for Apache Spark入門
為了幫助你快速開始使用Kotlin for Apache Spark,我們準備了一份快速入門指南,可以幫助你配置環境,正確定義專案的依賴關係並執行第一個以Kotlin編寫的自包含Spark應用程式。
下一步
我們知道將現有的框架升級到較新的版本需要一段時間,Spark也不例外。這就是為什麼在下一個更新中,我們將新增對早期Spark版本的支援:2.4.2 – 2.4.6。
我們還在Kotlin Spark殼上進行工作,以便你可以以互動方式使用資料並享受探索性資料分析的樂趣。
目前,API並未涵蓋Spark Streaming和Spark MLlib,但我們將密切聽取你的反饋,並將在我們的路線圖中進行相應處理。
將來,我們希望Kotlin能以一等公民的身份加入Apache Spark的正式專案。我們相信,它可以為Kotlin和Spark社群增加價值。這就是為什麼我們提出了一個Spark專案改進建議:Kotlin對Apache Spark的支援。我們期待你的意見及討論。
嘗試面向Apache Spark的Kotlin和反饋你的想法!