Megosztás a következőn keresztül:


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-szkripthez
  • REDUCE 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.

Következő lépések