Freigeben über


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

Wichtig

Azure Data Lake Analytics wurde am 29. Februar 2024 eingestellt. Erfahren Sie mehr mit dieser Ankündigung.

Bei Datenanalysen kann Ihre Organisation Azure Synapse Analytics oder Microsoft Fabricverwenden.

Voraussetzungen

Stellen Sie vor Beginn 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 SCHRITTE, Beispielskripts
  • Wählen Sie U-SQL-Erweiterungen installieren und dann OK

Überblick

Python-Erweiterungen für U-SQL ermöglichen Entwicklern die massive parallele Ausführung von Python-Code. Das folgende Beispiel veranschaulicht die grundlegenden Schritte:

  • Verwenden der REFERENCE ASSEMBLY-Anweisung zum Aktivieren von Python-Erweiterungen für das U-SQL-Skript
  • Verwenden des REDUCE-Vorgangs zum Partitionieren der Eingabedaten auf einem Schlüssel
  • Die Python-Erweiterungen für U-SQL enthalten einen integrierten Reducer (Extension.Python.Reducer), der Python-Code auf jedem Vertex ausführt, der dem Verkürzungselement zugewiesen ist.
  • Das U-SQL-Skript enthält den eingebetteten Python-Code mit einer Funktion namens usqlml_main, die einen Pandas DataFrame als Eingabe akzeptiert und einen Pandas DataFrame als Ausgabe zurückgibt.
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();

Wie Python sich in U-SQL integriert

Datentypen

  • Zeichenfolgen und numerische Spalten aus U-SQL werden unverändert von Pandas nach U-SQL und umgekehrt konvertiert.
  • U-SQL-Nullen werden in und aus Pandas NA Werten konvertiert.

Schemata

  • Indexvektoren in Pandas werden in U-SQL nicht unterstützt. Alle Eingabedatenframes in der Python-Funktion verfügen immer über einen numerischen 64-Bit-Index von 0 bis zur Anzahl der Zeilen minus 1.
  • U-SQL-Datasets können keine doppelten Spaltennamen haben
  • Spaltennamen von U-SQL-Datasets, die keine Zeichenfolgen sind.

Python-Versionen

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

Standard-Python-Module

Alle Standard-Python-Module sind enthalten.

Weitere Python-Module

Neben den Standardmäßigen Python-Bibliotheken sind mehrere häufig verwendete Python-Bibliotheken enthalten:

  • Pandas
  • numpy
  • numexpr

Ausnahmemeldungen

Derzeit wird eine Ausnahme im Python-Code als generischer Vertexfehler angezeigt. In Zukunft werden in den Fehlermeldungen des U-SQL-Auftrags die Python-Ausnahmemeldung angezeigt.

Einschränkungen bei der Eingabe- und Ausgabegröße

Jeder Scheitelpunkt verfügt über einen begrenzten Arbeitsspeicher, der ihm zugewiesen ist. Derzeit beträgt dieser Grenzwert 6 GB für eine AU. Da die Eingabe- und Ausgabedatenframes im Speicher im Python-Code vorhanden sein müssen, darf die Gesamtgröße für die Eingabe und Ausgabe 6 GB nicht überschreiten.

Nächste Schritte