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.