Modern technology gives us many things.

Big Data: Apache Spark erhält erste stabile Kotlin-API

0 2

JetBrains hat die erste Hauptversion der Kotlin-API für Spark fertiggestellt. Sie gilt als Feature-komplett und soll kompatibel sein zu den Kern-APIs von Spark.


    Big Data: Apache Spark erhält erste stabile Kotlin-API


    Big Data: Apache Spark erhält erste stabile Kotlin-API

(Bild: Maxger/Shutterstock.com)

Developer Von

  • Silke Hahn

JetBrains hat eine neue Schnittstelle für die quelloffene Big-Data-Engine Apache Spark vorgelegt: Das Release gilt als die erste stabile Kotlin-API, die das Technologieunternehmen als "Feature-komplett" bezeichnet, und sie soll laut Releasemeldung mit den wesentlichen Apache-Spark-Schnittstellen zusammenarbeiten.

Sechs Features stehen im Zentrum der Hauptversion, und einige dieser Eigenschaften sind bereits aus der entsprechenden API zu Scala bekannt: Typisiertes Selektieren (select) und Sortieren (sort), eine Reihe Kolumnen- beziehungsweise Spalten-Funktionen (der Begriff bezieht sich wohl auf eine Gruppe von Funktionen in Scala, die die "columns" von Datensätzen im Blick haben), Wrapper-Funktionen für die KeyValueGroupedDatasets, Unterstützung für die aus Scala bekannten TupleN-Klassen sowie für Datums- und Zeittypen. Zudem unterstützt die erste Major Version der neuen API auch Karten, die als Tuples kodiert sind.

Die typisierte Methode select gibt Datensätze der Tuples aus. Für Entwicklerinnen und Entwickler kann das fallweise praktischer sein als der Rückgriff auf die map-Funktion. Ein Nachteil dabei scheint zu sein, dass man die betreffende Kolumne, aus der die Daten zu beziehen sind, explizit mit ihrem korrekten Namen und Typ ansprechen muss. Das war in der Vergangenheit eine Fehlerquelle, die zu schwer behebbaren Problemen in der Pipeline geführt hatte.

Die neue API (als Erweiterung zur Scala-API betrachtet) kann offenbar das bekannte Problem durch eine typsichere Herangehensweise umgehen, die auf Strings und Casts verzichtet. Dabei spricht die Funktion – offenbar hergeleitet von der Reflection – die korrekte Spalte und den korrekten Typ an. Auch die Sortierfunktion soll eine solche reflektive Syntax erhalten haben, die nach dem gleichen Prinzip funktioniert. In Kotlin-Code sieht das aus wie folgt:

data class TestData(val id: Long, val name: String, val url: String) // ds is of type Dataset<TestData> val result: Dataset<Arity2<String, Long>> = ds.selectTyped(TestData::name, TestData::id)

Insgesamt 17 neue Spaltenfunktionen (Column Functions) weist das Release auf. Hier sind der API für Kotlin offenbar Grenzen gesetzt, da in Scala mehr solcher Funktionen möglich sind. Beispielsweise ist das Überschreiben von Klassen-Mitgliedern durch Erweiterungen ausgeschlossen, und die Klasse Dataset ist nicht erweiterbar. infix-Funktionen hingegen sind möglich, und es soll eine Reihe von Optionen geben, um Operator-ähnliche Funktionalität zu erreichen. Der Blogeintrag von JetBrains listet alle 17 Funktionen auf, die die Kotlin-API derzeit unterstützt.

Lesen Sie auch


    Big Data: Apache Spark erhält erste stabile Kotlin-API


    Big Data: Apache Spark erhält erste stabile Kotlin-API

Die encoder()-Funktion zum automatischen Erstellen jeglicher Funktionsaufrufe, die einen Decoder oder Encoder benötigen, hatte Entwicklerinnen und Entwicklern bislang einen selektiven Zugriff auf die Funktionalitäten der Dataset-API ermöglicht. Die Kotlin-API 1.0 für Apache Spark ist nun laut Blogeintrag um einige Wrapper angereichert, die Nutzerinnen und Nutzer ihrem KeyValueGroupedDataset überstülpen können. Zudem unterstützt sie die drei Funktionen cogroup, flatMapGroupsWithState und mapGroupsWithState.

Die TupleN-Klassen aus Scala sollen in Kotlin-Code ausgedrückt deutlich einfacher einzugeben sein, da nun weniger komplexer Code notwendig ist, und der Bedarf an speziellen Encodern oder Lambdas innerhalb von Argumentlisten entfällt. Die Herausgeber der API demonstrieren das mit einem Codebeispiel:

ds .select(ds.col("a").`as`<String>, ds.col("b").`as`<Int>) .map { Tuple2(it._1(), it._2() + 1) }

Weitere Neuerungen im Bereich der Daten- und Zeittypen sind seit dem Erscheinen von Apache Spark 3.0 entwickelt worden. So sind die vormals standardmäßig registrierten Encoder für den Datums- und Zeitstempel nun durch eine breitere Unterstützung für LocalDate, Date, Timestamp und Instant als zugleich Top-Level-Einheiten der Datenbezugsrahmen und als Felder innerhalb von Strukturen vorgesehen.

Weitere Details lassen sich dem Blogeintrag von JetBrains entnehmen, eine Auflistung sämtlicher Änderungen findet sich im Changelog auf GitHub. Wer sich für das API-Release interessiert, findet bei Maven Central den Download.

(sih)

Quelle: www.heise.de

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht.