Rozszerzanie skryptów U-SQL przy użyciu kodu języka Python w usłudze Azure Data Lake Analytics

Ważne

Usługa Azure Data Lake Analytics została wycofana 29 lutego 2024 r. Dowiedz się więcej z tym ogłoszeniem.

W przypadku analizy danych organizacja może używać Azure Synapse Analytics lub Microsoft Fabric.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że rozszerzenia języka Python są zainstalowane na koncie usługi Azure Data Lake Analytics.

  • Przejdź do konta Data Lake Analytics w Azure Portal
  • W menu po lewej stronie w obszarze WPROWADZENIE wybierz pozycję Przykładowe skrypty
  • Wybierz pozycję Zainstaluj rozszerzenia U-SQL , a następnie przycisk OK

Omówienie

Rozszerzenia języka Python dla języka U-SQL umożliwiają deweloperom wykonywanie masowego równoległego wykonywania kodu w języku Python. W poniższym przykładzie przedstawiono podstawowe kroki:

  • Użyj instrukcji REFERENCE ASSEMBLY , aby włączyć rozszerzenia języka Python dla skryptu U-SQL
  • REDUCE Używanie operacji do partycjonowania danych wejściowych na klucz
  • Rozszerzenia języka Python dla języka U-SQL obejmują wbudowany reduktor (Extension.Python.Reducer), który uruchamia kod języka Python na każdym wierzchołku przypisanym do redukcji
  • Skrypt U-SQL zawiera osadzony kod języka Python, który ma funkcję o nazwie usqlml_main , która akceptuje ramkę danych pandas jako dane wejściowe i zwraca ramkę danych pandas jako dane wyjściowe.
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();

Jak język Python integruje się z językiem U-SQL

Typy danych

  • Kolumny ciągowe i liczbowe z języka U-SQL są konwertowane jako między bibliotekami Pandas i U-SQL
  • Wartości null U-SQL są konwertowane na wartości i z wartości biblioteki Pandas NA

Schematy

  • Wektory indeksów w bibliotece Pandas nie są obsługiwane w języku U-SQL. Wszystkie ramki danych wejściowych w funkcji języka Python zawsze mają 64-bitowy indeks liczbowy od 0 do liczby wierszy minus 1.
  • Zestawy danych U-SQL nie mogą mieć zduplikowanych nazw kolumn
  • Nazwy kolumn zestawów danych U-SQL, które nie są ciągami.

Wersje języka Python

Obsługiwany jest tylko język Python 3.5.1 (skompilowany dla systemu Windows).

Standardowe moduły języka Python

Wszystkie standardowe moduły języka Python są dołączone.

Więcej modułów języka Python

Oprócz standardowych bibliotek języka Python dostępnych jest kilka często używanych bibliotek języka Python:

  • Pandas
  • numpy
  • numexpr

Komunikaty o wyjątkach

Obecnie wyjątek w kodzie języka Python jest wyświetlany jako ogólny błąd wierzchołka. W przyszłości komunikaty o błędach zadania U-SQL będą wyświetlać komunikat o wyjątku języka Python.

Ograniczenia rozmiaru danych wejściowych i wyjściowych

Każdy wierzchołek ma przypisaną ograniczoną ilość pamięci. Obecnie ten limit wynosi 6 GB dla jednostki organizacyjnej. Ponieważ ramki danych wejściowych i wyjściowych muszą istnieć w pamięci w kodzie języka Python, całkowity rozmiar danych wejściowych i wyjściowych nie może przekraczać 6 GB.

Następne kroki