Erweitern von U-SQL-Skripts mit Python-Code in Azure Data Lake Analytics

Wichtig

Azure Data Lake Analytics am 29. Februar 2024 eingestellt. In dieser Ankündigung erhalten Sie weitere Informationen.

Für Datenanalysen kann Ihr organization Azure Synapse Analytics oder Microsoft Fabric verwenden.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass die Python-Erweiterungen in Ihrem Azure Data Lake Analytics-Konto installiert sind.

  • Navigieren Sie im Azure-Portal zu Ihrem Data Lake Analytics-Konto.
  • Wählen Sie im linken Menü unter ERSTE SCHRITTEdie Option Beispielskripts aus.
  • Wählen Sie U-SQL-Erweiterungen installieren und dann OK aus.

Übersicht

Mit Python-Erweiterungen für U-SQL können Entwickler Python-Code per Massively Parallel Processing ausführen. Im folgenden Beispiel werden die grundlegenden Schritte veranschaulicht:

  • Verwenden der REFERENCE ASSEMBLY-Anweisung zum Aktivieren von Python-Erweiterungen für das U-SQL-Skript
  • Verwenden des REDUCE-Vorgangs zum Partitionieren der Eingabedaten für einen Schlüssel
  • Die Python-Erweiterungen für U-SQL enthalten einen integrierten Reducer (Extension.Python.Reducer), mit dem Python-Code auf jedem Vertex ausgeführt wird, der dem Reducer zugewiesen ist.
  • Das U-SQL-Skript enthält den eingebetteten Python-Code mit der Funktion „usqlml_main“, für die ein Pandas-DataFrame als Eingabe akzeptiert und ein Pandas-DataFrame als Ausgabe zurückgegeben wird.
REFERENCE ASSEMBLY [ExtPython];
DECLARE @myScript = @"
def get_mentions(tweet):
    return ';'.join( ( w[1:] for w in tweet.split() if w[0]=='@' ) )
def usqlml_main(df):
    del df['time']
    del df['author']
    df['mentions'] = df.tweet.apply(get_mentions)
    del df['tweet']
    return df
";
@t  =
    SELECT * FROM
       (VALUES
           ("D1","T1","A1","@foo Hello World @bar"),
           ("D2","T2","A2","@baz Hello World @beer")
       ) AS date, time, author, tweet );
@m  =
    REDUCE @t ON date
    PRODUCE date string, mentions string
    USING new Extension.Python.Reducer(pyScript:@myScript);
OUTPUT @m
    TO "/tweetmentions.csv"
    USING Outputters.Csv();

Integration von Python in U-SQL

Datentypen

  • Zeichenfolgen- und numerische Spalten von U-SQL werden unverändert zwischen Pandas und U-SQL konvertiert
  • U-SQL-NULL-Werte werden in und aus „NA“-Pandas-Werten konvertiert

Schemas

  • Indexvektoren in Pandas werden in U-SQL nicht unterstützt. Alle Eingabedatenrahmen in der Python-Funktion haben stets einen numerischen 64-Bit-Index von 0 bis zur Anzahl der Zeilen minus 1.
  • U-SQL-Datasets dürfen keine doppelten Spaltennamen aufweisen
  • U-SQL-Datasets Spaltennamen, die keine Zeichenfolgen sind.

Python-Versionen

Nur Python 3.5.1 (für Windows kompiliert) wird unterstützt.

Python-Standardmodule

Alle Python-Standardmodule sind enthalten.

Weitere Python-Module

Neben den Python-Standardbibliotheken sind noch weitere häufig verwendete Python-Bibliotheken enthalten:

  • pandas
  • numpy
  • numexpr

Ausnahmemeldungen

Derzeit wird eine Ausnahme in Python-Code als generischer Scheitelpunktfehler angezeigt. In Zukunft wird mit U-SQL-Auftragsfehlermeldungen die Python-Ausnahmemeldung angezeigt.

Einschränkungen der Ein- und Ausgabegröße

Jedem Scheitelpunkt ist eine begrenzte Menge an Arbeitsspeicher zugewiesen. Derzeit beträgt der Grenzwert 6 GB pro AU. Da die Eingabe- und Ausgabedatenrahmen im Python-Code im Arbeitsspeicher vorhanden sein müssen, darf die Gesamtgröße für die Eingabe und Ausgabe 6 GB nicht überschreiten.

Nächste Schritte