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.