Расширение возможностей сценариев U-SQL c кодом Python в Azure Data Lake Analytics
Важно!
Поддержка Azure Data Lake Analytics прекращена 29 февраля 2024 г. Дополнительные сведения см. в этом объявлении.
Для аналитики данных ваша организация может использовать Azure Synapse Analytics или Microsoft Fabric.
Предварительные требования
Прежде чем начать, убедитесь, что в вашей учетной записи Azure Data Lake Analytics установлены расширения Python:
- Перейдите к учетной записи Data Lake Analytics в портал Azure
- В меню слева в разделе НАЧАЛО РАБОТЫ выберите Примеры скриптов.
- Выберите Установить расширения U-SQL, а затем — ОК.
Обзор
Расширения Python для U-SQL позволяют разработчикам выполнять код Python с массовым параллелизмом. В следующих примерах представлены основные шаги:
- Используйте инструкцию
REFERENCE ASSEMBLY
, чтобы включить расширения Python для сценария U-SQL - Использование операции
REDUCE
для разделения входных данных в разделе - Расширения Python для U-SQL включают встроенный инструмент редукции (
Extension.Python.Reducer
), который выполняет код Python в каждой вершине, назначенный инструменту редукции. - Сценарий U-SQL содержит встроенный код Python с функцией
usqlml_main
, которая принимает кадр данных Pandas в качестве входных данных и возвращает его в качестве выходных данных.
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();
Интеграция Python c U-SQL
Типы данных
- Строковые и числовые столбцы из U-SQL преобразовываются без изменений между Pandas и U-SQL.
- Пустые значения U-SQL преобразовываются в значения Pandas
NA
и из них.
Схемы
- Векторы индексов в Pandas не поддерживаются в U-SQL. Все входные кадры данных в функции Python будут всегда содержать 64-разрядный числовой индекс от 0 до соответствующего количества строк минус 1.
- Наборы данных U-SQL не могут иметь повторяющиеся имена столбцов
- Наборы данных U-SQL — это имена столбцов, которые не являются строками.
Версии Python
Поддерживается только версия Python 3.5.1 (скомпилированная для Windows).
Стандартные модули Python
Включены все стандартные модули Python.
Дополнительные модули Python
Помимо стандартных библиотек Python, включено несколько часто используемых библиотек Python:
- pandas
- numpy
- numexpr
Сообщения об исключении
В настоящее время исключение в коде Python отображается в качестве общего сбоя вершины. В будущем в сообщениях об ошибках заданий U-SQL будут отображаться сообщения об исключении Python.
Ограничения размера входных и выходных данных
Каждой вершине назначен ограниченный объем памяти. В настоящее время он составляет 6 ГБ на единицу аналитики. Так как входные и выходные кадры данных должны находиться в памяти в коде Python, общий размер входных и выходных данных не может превышать 6 ГБ.