Apache Spark için Kotlin


Görsel Referansı


Apache Spark için Kotlin Preview 2 versiyonu yayınlandı. Preview 1'e göre bu 2. versiyonda nelerin değiştiğine birlikte bakalım.


Scala 2.11 ve Spark 2.4.1+ Desteği


Yeni versiyondaki en önemli değişiklikler Scala 2.11 ve Spark 2.4 desteği eklenerek yapıldı. Bu, production ortamında Kotlin ile yazılmış job'ları doğrudan çalıştırabileceğiniz anlamına geliyor. Syntax ise Apache Spark 3.0 versiyonundaki ile aynıdır fakat yükleme komutlarda bazı farklılıklar vardır. Kütüphaneyi eklemek için örnek kod;

libraryDependencies += "org.jetbrains.kotlinx.spark" %% "kotlin-spark-api-2.4" % "1.0.0-preview2"

Maven gibi diğer Build sistemlerinde standart yöntem kullanılmıştır;

<dependency>
 <groupId>org.jetbrains.kotlinx.spark</groupId>
 <artifactId>kotlin-spark-api-2.4_2.11</artifactId>
 <version>1.0.0-preview2</version>
</dependency>

Gradle için;

implementation 'org.jetbrains.kotlinx.spark:kotlin-spark-api-2.4_2.11:1.0.0-preview2'

Spark 3.0 şimdilik sadece Scala 2.12 desteğine sahiptir. Bu sebepten tanımlamaya gerek yoktur.


SparkSessionBuilder Desteği


Preview 2'den önce tek bir seçeneğiniz vardı; Scala'dan Kotlin'e tüm builder'ları yeniden yazmak zorunda kalırdınız. Şimdi 'withSpark' fonksiyonu ile yeni bir yöntem mevcut. Bu fonksiyon parkSession.Builder'ı parametre olarak kabul etmektedir.

val builder = // obtain your builder herewithSpark(builder, logLevel = DEBUG) {// your spark is initialized with correct config here}

Broadcast Değişken Desteği


Bazen executor node'larıyla veri paylaşımı yapmanız gerekir. Bazı durumlarda, her bir execution node'a ayrı ayrı veriler sağlamamız gerekir. Apache Spark brodcasting değişkenleri ile bunu mümkün kılmaktadır. Bunu daha önce 'encoder' fonksiyonu ile yapabiliyordunuz. Scala API ile mümkün olduğunca tutarlı bir API deneyimi sağlanması hedeflenmektedir ve bu sebeple, Broadcasting desteği getirilmiştir.

// Broadclasted data should implement Serializabledata class SomeClass(val a: IntArray, val b: Int) : Serializable
// some another code snippedval receivedBroadcast = broadcast.value // broadcasted value is available

Spark 3 için Primitive Dizi Desteği


Veri akışlarında primitive tiplerde diziler kullanıyorsanız, bu diziler aynı şekilde Apache Spark Kotlin'de de çalışmaktadır. Veri dizilerinde Java bean'lar gibi data class'ları, Preview 1'den itibaren desteklenmekteydi, Preview 2 ile birlikte Primitive Diziler içinde destek eklendi. Bu destek, sadece Kotlin Primitive Data tipleri (IntArray, BooleanArray ve LongArray) için geçerlidir.


Konu ile ilgili daha fazla bilgi için; https://blog.jetbrains.com/kotlin/2021/02/kotlin-for-apache-spark-one-step-closer-to-your-production-cluster/


#android #kotlin #apachespark #spark

0 yorum

Son Paylaşımlar

Hepsini Gör