Udostępnij przez


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.

Na potrzeby analizy danych organizacja może używać usługi 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 usługi Data Lake Analytics w witrynie 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

Przegląd

Rozszerzenia języka Python dla języka U-SQL umożliwiają deweloperom wykonywanie masowego równoległego wykonywania kodu w języku Python. Poniższy przykład ilustruje podstawowe kroki:

  • Użyj instrukcji REFERENCE ASSEMBLY , aby włączyć rozszerzenia języka Python dla skryptu U-SQL
  • Używanie operacji REDUCE do podziału danych wejściowych według klucza
  • 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 reduktora
  • Skrypt U-SQL zawiera osadzony kod języka Python, który ma funkcję o nazwie usqlml_main , która akceptuje ramkę danych biblioteki pandas jako dane wejściowe i zwraca ramkę danych biblioteki 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 bez zmian między Pandas a U-SQL.
  • Wartości null U-SQL są konwertowane na wartości i z wartości biblioteki Pandas NA

Schematów

  • 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 z zakresu 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 znaków.

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 powszechnie używanych bibliotek języka Python:

  • Pandas
  • numpy
  • numexpr

Komunikaty o wyjątkach

Obecnie wyjątek w kodzie Pythona 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 AU (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