面向Apache Spark的Kotlin預覽版簡介

kotliner發表於2020-09-03

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在現有方法中新增了leftJoinrightJoin和其他別名,這是從設計角度的空安全。

注意上述示例中的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反饋你的想法!

相關文章