Delen via


U-SQL-scripts uitbreiden met Python-code in Azure Data Lake Analytics

Belangrijk

Azure Data Lake Analytics is op 29 februari 2024 buiten gebruik gesteld. Meer informatie vindt u in deze aankondiging.

Voor gegevensanalyse kan uw organisatie Azure Synapse Analytics of Microsoft Fabric gebruiken.

Vereiste voorwaarden

Controleer voordat u begint of de Python-extensies zijn geïnstalleerd in uw Azure Data Lake Analytics-account.

  • Navigeer naar uw Data Lake Analytics-account in Azure Portal
  • Selecteer Voorbeeldscripts in het linkermenu onder AAN DE SLAG
  • Selecteer U-SQL-extensies installeren en vervolgens OK

Overzicht

Met Python-extensies voor U-SQL kunnen ontwikkelaars massaal parallelle uitvoering van Python-code uitvoeren. In het volgende voorbeeld ziet u de basisstappen:

  • Gebruik de REFERENCE ASSEMBLY instructie om Python-extensies in te schakelen voor het U-SQL-script
  • REDUCE De bewerking gebruiken om de invoergegevens op een sleutel te partitioneren
  • De Python-extensies voor U-SQL bevatten een ingebouwde reducer (Extension.Python.Reducer) die Python-code uitvoert op elk hoekpunt dat is toegewezen aan de reducer
  • Het U-SQL-script bevat de ingesloten Python-code met een functie usqlml_main die een pandas DataFrame accepteert als invoer en een Pandas DataFrame retourneert als uitvoer.
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();

Hoe Python kan worden geïntegreerd met U-SQL

Gegevenssoorten

  • Tekenreeks- en numerieke kolommen van U-SQL worden geconverteerd as-is tussen Pandas en U-SQL
  • U-SQL Null-waarden worden geconverteerd in en uit Pandas-waarden NA

schemas

  • Indexvectoren in Pandas worden niet ondersteund in U-SQL. Alle invoergegevensframes in de Python-functie hebben altijd een 64-bits numerieke index van 0 tot en met het aantal rijen min 1.
  • U-SQL-gegevenssets kunnen geen dubbele kolomnamen hebben
  • Kolomnamen van U-SQL-gegevenssets die geen tekenreeksen zijn.

Python-versies

Alleen Python 3.5.1 (gecompileerd voor Windows) wordt ondersteund.

Standaard Python-modules

Alle standaard Python-modules zijn opgenomen.

Meer Python-modules

Naast de standaard Python-bibliotheken zijn verschillende veelgebruikte Python-bibliotheken opgenomen:

  • Pandas
  • numpy
  • numexpr

Uitzonderingsberichten

Momenteel wordt een uitzondering in Python-code weergegeven als algemene hoekpuntfout. In de toekomst worden in de foutberichten van de U-SQL-taak de Python-uitzonderingsberichten weergegeven.

Beperkingen voor invoer- en uitvoergrootte

Aan elk hoekpunt is een beperkte hoeveelheid geheugen toegewezen. Op dit moment is die limiet 6 GB voor een AU. Omdat de invoer- en uitvoergegevensframes in het geheugen in de Python-code moeten bestaan, mag de totale grootte voor de invoer en uitvoer niet groter zijn dan 6 GB.

Volgende stappen