Microsoft Azure: Angeln im Datenteich

Vielleicht war es ja eine gute Vorbereitung, dass ich mit meinen zwei ältesten Kindern vor zwei Wochen das Schweizerische Sportfischerbrevet erfolgreich besucht habe. Dabei mussten wir unseren Fisch zum Mittagessen selber töten und ausnehmen. Am Nachmittag war dann das binden und auch wieder lösen von diversen Knoten ein Thema. Nicht unpassend dazu hat Microsoft vor kurzem die Azure Data Lake) als Big Data Cloud Lösung vorgestellt. Der See besteht eigentlich aus drei Teilen:

  • Azure Data Lake Store (vorher war das der Azure Data Lake) stellt eine zentrale Speicherstelle für Daten jeder Art und Grösse dar, die unabhängig von der Applikationslogik funktioniert.
  • Die Applikationslogik wird bereit gestellt durch Azure Data Lake Analytics. Insbesondere die neue Abfragesprache U-SQL, einer Mischung aus SQL und C#, kommt dabei eine grosse integrative Rolle zu. U-SQL Abfragen können verteilt ausgeführt werden und bieten im Gegensatz zu reinem SQL eine mehrstufige und mehr programmierorientierte Herangehensweise.
  • Das ganze läuft dann auf HDInsight, das aus einem Apache Hadoop-Cluster besteht und folgende Open Source-Analysetools unterstützt:
    • Hive
    • Spark
    • HBase
    • Storm

HDInsight ist vollständig von Microsoft gemanaged, und Microsoft garantiert eine Uptime von 99.9%, was für derart unvorhersagbare Skalierungen, wie sie bei Big Data üblich sind, sehr gut ist. Dabei werden umfangreiche Datenquellen unterstützt, und die Anbindung an bestehende Microsoft Cloud-Techniken wie PowerBI ist natürlich gegeben:

Azure Data Lake Analytics and Store

Wem Pig bei den aufgeführten Techniken fehlt – der Ersatz dafür ist U-SQL (Pig setzt auf Java-Syntax auf, U-SQL auf C#). HBase ist fast schon ein Muss, für Big Data brauche ich Unterstützung von NoSQL-Datenbanken. Für den Dataload verwendet man Storm, Hive ist eine auf SQL basierende Abfragesprache (HQL genannt) und Spark ist der Nachfolger von map-reduce in Hadoop, wird via Java angesprochen und dient der In-Memory-Analyse.

Uns interessiert hier aber vor allem U-SQL, auf das wir einen genaueren Blick werfen wollen. Die Syntax lehnt sich stark an SQL an, aber das C#-Datentypmodell wird unterstützt. Es sieht also zunächst ganz einfach aus:

@Resultat = SELECT Land, Stadt, COUNT(*) AS AnzahlVonFahrzeuglenker
FROM @Fahrzeuglenker
GROUP by Land, Stadt
FETCH FIRST 10 ROWS;

Die letzte Zeile verrät, dass wir mit Big Data arbeiten – wir sehen nur eine Vorschau (in diesem Fall 10 Zeilen). U-SQL versteckt all die aufwändigen Verfahren für Big Data mehr oder minder vollständig vor uns (Parallelisierung, verteilte Verarbeitung), während es sehr freie Hand bei den Datentypen und deren Verarbeitung lässt, von benutzerdefinierten Funktionen über eigene Ein- und Ausgabeformate bis hin zu Verschlüsselungsverfahren.

Wie setzt sich nun aber die @Fahrzeuglenker-Datenquelle zusammen?

@Fahrzeuglenker = EXTRACT fahrzeuglenker_id
, name string
, strasse string
FROM @Eingabe_Fahrzeuglenker
USING Extractors.Text(delimiter: '\t', quoting: true)


Quelle ist hier also Text, das einen Tab-Delimiter hat und der in An- und Ausführungszeichen eingeschlossen ist. Weiterhin könnte ich natürlich eine Kodierung angeben. Genau so einfach lässt sich eine Abfrage wie die erste oben in eine Ausgabe transformieren:

OUTPUT @Fahrzeuglenker 
TO @OUTPUT
USING Outputters.CSV(quoting: true);

Das ist mal ein erster Blick auf U-SQL, und sicher auch eine sehr einfache Anwendungsweise. Aber es geht viel mehr:

  • Die Patterns (wie oben z. B. bei der Datenquelle gezeigt) auf eine Menge an Dateien anwenden
  • Federierte Abfragen, z. B. gegen Azure SQL DB
  • Eigene Processors oder Extractors schreiben
  • Views, Table-Valued Functions, Procedures
  • Internet of Things-Anbindung

Ein Knoten beim Angelbrevet hatte es uns besonders angetan: Der doppelte Uni-Knoten (hier sieht man, wie er aussieht). So ähnlich und fast ebenso einfach kann man mit dem Data Lake Datenquellen verbinden. Nur für das Ausnehmen vom Fisch werde ich wohl einen custom Extractor schreiben müssen.

Hinterlassen Sie eine Antwort