U-SQL-szkriptek kiterjesztése Python-kóddal az Azure Data Lake Analytics
Fontos
Az Azure Data Lake Analytics 2024. február 29-én megszűnt. További információ ezzel a bejelentéssel.
Az adatelemzéshez a szervezet használhatja a Azure Synapse Analyticset vagy a Microsoft Fabricet.
Előfeltételek
Mielőtt hozzákezdene, győződjön meg arról, hogy a Python-bővítmények telepítve vannak az Azure Data Lake Analytics-fiókjában.
- Navigáljon a Data Lake Analytics fiókjához a Azure Portal
- A bal oldali menü ELSŐ LÉPÉSEK területén válassza a Mintaszkriptek lehetőséget
- Válassza az U-SQL-bővítmények telepítése, majd az OK gombot
Áttekintés
Az U-SQL-hez készült Python-bővítmények lehetővé teszik a fejlesztők számára a Python-kód nagymértékben párhuzamos végrehajtását. Az alábbi példa az alapvető lépéseket mutatja be:
REFERENCE ASSEMBLY
A utasítás használatával engedélyezze a Python-bővítményeket az U-SQL-szkripthezREDUCE
A művelet használata a bemeneti adatok kulcson való particionálására- Az U-SQL Python-bővítményei tartalmaznak egy beépített redukátort (
Extension.Python.Reducer
), amely Python-kódot futtat a reduktátorhoz rendelt minden egyes csúcsponton - Az U-SQL-szkript tartalmazza a beágyazott Python-kódot, amelynek egy nevű
usqlml_main
függvénye bemenetként elfogadja a pandas DataFrame-et, és egy pandas DataFrame-et ad vissza kimenetként.
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();
Hogyan integrálható a Python az U-SQL-sel?
Adattípusok
- Az U-SQL-ből származó sztringek és numerikus oszlopok a Pandas és az U-SQL között vannak konvertálva
- Az U-SQL Null értékek Pandas-értékekké
NA
és -értékekből lesznek konvertálva
Sémák
- A Pandas indexvektorai nem támogatottak az U-SQL-ben. A Python-függvény összes bemeneti adatkerete mindig 64 bites numerikus indexszel rendelkezik 0-tól a sorok számától 1-ig.
- Az U-SQL-adatkészletek nem tartalmazhatnak ismétlődő oszlopneveket
- Az U-SQL-adatkészletek nem sztringek.
Python-verziók
Csak a (Windowsra lefordított) Python 3.5.1 támogatott.
Standard Python-modulok
A rendszer az összes standard Python-modult tartalmazza.
További Python-modulok
A szabványos Python-kódtárak mellett számos gyakran használt Python-kódtár is megtalálható:
- pandas
- numpy
- numexpr
Kivételüzenetek
A Python-kódban jelenleg egy kivétel általános csúcshibaként jelenik meg. A jövőben az U-SQL-feladat hibaüzenetei megjelenítik a Python-kivétel üzenetét.
Bemeneti és kimeneti méretre vonatkozó korlátozások
Minden csúcshoz korlátozott mennyiségű memória van hozzárendelve. Ez a korlát jelenleg 6 GB egy AU esetében. Mivel a bemeneti és kimeneti DataFrame-eknek létezniük kell a memóriában a Python-kódban, a bemenet és a kimenet teljes mérete nem haladhatja meg a 6 GB-ot.