Neue Plugins von Grund auf für Blossom Sky entwickeln (Entwickler Teil 1)

September 11, 2023
-
Team für den öffentlichen Sektor
-

In der sich ständig verändernden digitalen Landschaft von heute ist Blossom Sky ein führendes Unternehmen im Bereich virtueller Data Lakes. Bekannt als hochmodernes virtuelles Data Lake-Haus und einheitliche Analyseplattform der nächsten Generation, bietet Blossom Sky die Lösung für die Verwaltung komplexer Datenpipelines. Blossom Sky deckt alles ab, von der Datenextraktion über den Zugriff auf mehrere Datenquellen, die sorgfältige Datenvorverarbeitung bis hin zu fortschrittlichem Feature-Engineering.

Dieser Artikel ist der Beginn einer Reihe für Entwickler und Technikfreaks, die alle Möglichkeiten nutzen möchten, die Blossom Sky zu bieten hat. Das Hauptthema? Erstellung und Integration von benutzerdefinierten Blossom Plugins. Dies sind keine durchschnittlichen Plugins. Sie basieren auf benutzerdefinierten logischen Operatoren und komplexen Zuordnungen und sind für die Leistung auf mehreren Ausführungsplattformen optimiert. Eines der besten Dinge an diesen Plugins ist die Möglichkeit, Konversionskanäle zu starten. Dies bedeutet, dass die Ausgabedatentypen immer flexibel und mit jeder von Ihnen ausgewählten Plattform kompatibel sind.

In diesem Beitrag werden wir uns mit den wichtigsten Konzepten von Blossom Sky befassen, die für die Verbesserung und Realisierung seiner vielfältigen Funktionen unerlässlich sind. Es ist wichtig zu verstehen, dass Blossom Sky nicht nur ein plattformübergreifendes Verarbeitungsframework ist, sondern das Herzstück komplexer und qualitativ hochwertiger Berechnungen. Wir werden uns auf eine Reise begeben und die komplexen Abstraktionen durchgehen, die die reibungslose Integration von Hunderten von Technologien ermöglichen, und gleichzeitig die Fähigkeit von Blossom verbessern, Betreiber auf mehreren Plattformen zu optimieren.

Blossom Sky Execution Plan

Der wayangPlan() abstrahiert intelligente Operatoren, die jeweils für eine bestimmte Arbeitslast konzipiert sind: Fortschrittliche Algorithmen zur Navigation, Feinabstimmung und Verwaltung einer großen Anzahl von Operatoren. Diese Operatoren sind für die weitere Datenverarbeitung zuständig und bieten eine Art binäre Datenabstraktionsschnittstelle.

Datenoperatoren

Blossom Sky bietet in seiner Toolbox eine breite Palette von Operatoren, die von den grundlegenden Komponenten relationaler Datenbanken bis hin zur Fluidität von FlinkStreamProcessors reichen. Die Brillanz liegt im zugrunde liegenden Framework, das komplexe Abstraktionen durchläuft und die umfassende Integration mehrerer Komponenten ermöglicht. Für die Entwickler ist der Arbeitsablauf einfach: Konzentrieren Sie sich auf die Erstellung vorkonfigurierter Schnittstellen, während Blossom Sky die Orchestrierung organisiert.

Benutzerschnittstelle

Diese Schnittstelle ist das Herzstück des Blossom Plans. Es enthält eine detaillierte Beschreibung jedes Knotens und seiner Komponenten. Bei der Implementierung müssen Entwickler den Typ des Operators angeben und sich mit den Details seiner Konfigurationen befassen, um eine optimale Verarbeitung zu gewährleisten. Die Methoden, die die Eingabe- und Ausgabeslots steuern, sind für diesen Prozess von entscheidender Bedeutung. Sie kontrollieren sorgfältig die Daten, die jede Bedieneinheit verarbeitet und erzeugt. Zu beachten ist, dass einige binäre Operatoren, wie z. B. Join-Operatoren, mehrere Eingabequellen gleichzeitig verwalten. Auf der anderen Seite erzeugen andere wie Replicate Operators viele Ausgabestreams, die jeweils unterschiedlichen Operatoren gewidmet sind.

Im Kern spielen Eingabe- und Ausgangssteckplätze eine entscheidende Rolle bei der Verbindung zweier Betreiber, wodurch eine Beziehung zwischen Hersteller und Verbraucher entsteht.

Abstrakter Operator für Eingabe-/Ausgabekardinalität

Wie im vorherigen Abschnitt beschrieben, benötigen verschiedene Operatoren eine unterschiedliche Anzahl von Eingabe-/Ausgangsslots. Quell-Operatoren benötigen nur einen Ausgabeslot, da sie keine Eingabe empfangen, und Senken-Operatoren benötigen nur einen Eingabeslot, da sie keine Ergebnisse an andere Operatoren übertragen. Für eine bessere Klassifizierung der Operatoren integriert Blossom die Klassen UnaryTounaryOperator, UnarySource, UnarySink und BinaryTounaryOperator, um jeden speziellen Fall zu behandeln. Eingabe- und Ausgabe-Slot werden durch einen DatasetType definiert, der den Typ und die Struktur verfolgt, die zwischen Operatoren über einen Slot übertragen werden.

Gehen wir mit dieser Erklärung weiter und sehen wir uns die abstrakte Klasse BinaryTounaryOperator an. Sie erhält drei Generische Typen[1] entspricht den beiden Eingabetypen des Operators und einem einzelnen Ausgabetyp. Durch Erweiterung dieser Klasse kann der Benutzer Join-, Union- und Intersect-Operatoren modellieren.


Blossom Sky Operator-Klassen

Blossom Operator Classes sind die eigentlichen Knoten, aus denen ein BlossomPlan besteht. Der Zweck einer Blossom Operatorklasse besteht darin, eine versprochene Funktionalität zu definieren, die auf verschiedenen Verarbeitungsplattformen implementiert werden könnte. Die Blossom Community nannte diese Operatoren normalerweise plattformunabhängige Operatoren. Blossom Operator Classes beschreiben nicht, wie eine bestimmte Funktionalität bereitgestellt wird, da dies stark von der jeweiligen Plattform abhängt, die Blossom zur Ausführung des Operators verwenden kann.

Jede Operatorklasse, die einen abstrakten Eingabe-/Ausgabe-Kardinalitätsoperator erweitert, ist eine Blossom Operatorklasse. Sehen wir uns die CountOperator Blossom Operatorklasse an; countOperator<Typ> erweitert UnaryTounaryOperator<Typ, Long>, was bedeutet, dass es einen generischen Wert empfängt und einen Long-Wert zurückgibt. Daher besteht die einzige Einschränkung für Plattformen, die diesen Operator implementieren, darin, dass ein CountOperator während der Ausführung einen Stream von Type-Elementen empfängt; nach deren Verarbeitung muss der CountOperator einen einzelnen Long-Wert zurückgeben. Jede Plattform, die CountOperator unterstützen möchte, muss diesem Muster folgen.

Kanäle

Ein Channel in Blossom ist die Schnittstelle, die verschiedene Gruppen von Operatoren miteinander verbindet; mit anderen Worten, ein Kanal ist eine Arte digitaler Klebstoff, der einen Operator mit einem anderen Operator verbindet. Stellen Sie sich einen Operator „Source“ vor, der in Java ausgeführt wird und Tupel aus einer lokalen Datei liest; die Ausgabe von „Source“ wird eine Sammlung von Tupels sein. Im beschriebenen Fall ist der von Source bereitgestellte Ausgabekanal eine Java-Sammlung. Ein Java-Sammelkanal kann nur als Eingabe von Operatoren verwendet werden, die das Java-Sammlungsformat als Eingabe akzeptieren. Damit andere Plattformen als Java die Ausgabe von Source akzeptieren können, muss diese Java-Sammlung unbedingt in ein anderes Format konvertiert werden.

Ausführungsoperatoren

Ein CountOperator kann nur ausgeführt werden, wenn ein bestimmtes Verhalten angegeben ist. Ein Ausführungsoperator implementiert die Prozedur, der ein Operator folgt, um sie auf einer bestimmten Plattform korrekt auszuführen. Sehen wir uns zwei Beispiele an:

JavaCount-Operator<Typ> erweitert CountOperator<Typ> und implementiert das Interface JavaExecutionOperator. Im Fall von Java Platform verleiht die Evaluate-Methode diesem ExecutionOperator Verhalten. Beachten Sie bei der Extraktion des Codes, dass der Operator einen Java-Collection-Channel verwendet und nach der Umwandlung des Channels als Collection die Standardmethode Collection.Size verwendet, um das Ergebnis zu erhalten:

Auf der anderen Seite FlinkCountOperator<Typ> erweitert CountOperator<Typ> und implementiert das Interface FlinkExecutionOperator. Der Code Extract zeigt, dass in diesem Fall der Channel ein Flink DatasetChannel sein muss, und die Operation ist auch trivial, wenn das Ergebnis der Flink Dataset.Count-Methode zurückgegeben wird.

Ausführungsoperatoren eines Operators sind alle Implementierungsalternativen für einen Blossom Operator, die als Teil eines ausführbaren Plans aufgenommen werden können. Um zu entscheiden, welche Alternative angesichts eines bestimmten Optimierungsziels effizienter ist, vergleicht Blossom Sky eine Schätzung der Ressourcen, die von verschiedenen Ausführungsoperatoren benötigt werden, die auf den verfügbaren Plattformen laufen.

Im nächsten Teil dieses Tutorials werden wir untersuchen, wie Blossom Sky einen WayangPlan() zu optimiert, welche Codeteile in unseren Plugins bereitgestellt werden müssen, um dies zu ermöglichen, und ein reales Beispiel für einen benutzerdefinierten Executor, der eine Postgres-Plattform beinhaltet.

Referenzen

[1] Generische Typen Java

Über Scalytics

Da die Anforderungen an die moderne KI-Entwicklung steigen, haben traditionelle ETL-Plattformen Schwierigkeiten, Schritt zu halten, da sie durch ihre eigenen Einschränkungen in Bezug auf Datenbewegungen und Verarbeitungsgeschwindigkeit blockiert werden. Scalytics Connect ist die Lösung der nächsten Generation, die speziell für die Optimierung von KI-Trainings durch innovative Datenintegrationsfunktionen entwickelt wurde.

Wir ermöglichen es Ihnen, datengestützte Entscheidungen in Minuten statt Tagen zu treffen
Scalytics ist basierend auf Apache Wayang, und wir sind stolz darauf, das Projekt zu unterstützen. Du kannst dir ihr öffentliches GitHub-Repo hier ansehen. Wenn Dir unsere Software gefällt - ein Star ⭐ würde viel bedeuten!

Wenn Sie professionelle Unterstützung von unserem Team von branchenführenden Experten benötigen, können Sie sich jederzeit an uns über Slack oder E-Mail wenden.
back to all articlesFollow us on Google News
Schneller zum KI-Erfolg
Kostenlose White Paper. Erfahren Sie, wie Scalytics KI und ML optimiert und Unternehmen in die Lage versetzt, schnellere KI-Erfolge zu erzielen.

Starten Sie noch heute mit Scalytics Connect

Thank you! Our team will get in touch soon.
Oops! Something went wrong while submitting the form.