Utöka U-SQL-skript med Python-kod i Azure Data Lake Analytics

Viktigt

Azure Data Lake Analytics tillbaka den 29 februari 2024. Läs mer med det här meddelandet.

För dataanalys kan din organisation använda Azure Synapse Analytics eller Microsoft Fabric.

Förutsättningar

Innan du börjar kontrollerar du att Python-tilläggen är installerade i ditt Azure Data Lake Analytics-konto.

  • Gå till ditt Data Lake Analytics-konto i Azure Portal
  • I den vänstra menyn under KOMMA IGÅNG väljer du Exempelskript
  • Välj Installera U-SQL-tillägg och sedan OK

Översikt

Med Python-tillägg för U-SQL kan utvecklare utföra massivt parallell körning av Python-kod. I följande exempel visas de grundläggande stegen:

  • Använd -instruktionen REFERENCE ASSEMBLY för att aktivera Python-tillägg för U-SQL-skriptet
  • Använda åtgärden REDUCE för att partitionering av indata på en nyckel
  • Python-tilläggen för U-SQL innehåller en inbyggd reducerare (Extension.Python.Reducer) som kör Python-kod på varje hörn som tilldelats reducern
  • U-SQL-skriptet innehåller den inbäddade Python-koden som har en funktion med namnet usqlml_main som accepterar en Pandas DataFrame som indata och returnerar en Pandas DataFrame som utdata.
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();

Så integrerar Python med U-SQL

Datatyper

  • Strängkolumner och numeriska kolumner från U-SQL konverteras som de är mellan Pandas och U-SQL
  • U-SQL Null-värden konverteras till och från Pandas-värden NA

Scheman

  • Indexvektorer i Pandas stöds inte i U-SQL. Alla indataramar i Python-funktionen har alltid ett 64-bitars numeriskt index från 0 till antalet rader minus 1.
  • U-SQL-datauppsättningar kan inte ha dubbla kolumnnamn
  • Kolumnnamn för U-SQL-datauppsättningar som inte är strängar.

Python-versioner

Endast Python 3.5.1 (kompilerad för Windows) stöds.

Python-standardmoduler

Alla Python-standardmoduler ingår.

Fler Python-moduler

Förutom Python-standardbiblioteken ingår flera vanliga Python-bibliotek:

  • Pandas
  • numpy
  • numexpr

Undantagsmeddelanden

För närvarande visas ett undantag i Python-kod som ett allmänt hörnfel. I framtiden visar U-SQL-jobbfelmeddelandena Python-undantagsmeddelandet.

Storleksbegränsningar för indata och utdata

Varje hörn har en begränsad mängd minne tilldelat till sig. För närvarande är den gränsen 6 GB för en AU. Eftersom dataramarna för indata och utdata måste finnas i minnet i Python-koden får den totala storleken för in- och utdata inte överstiga 6 GB.

Nästa steg