在 Azure Data Lake Analytics 中使用 Python 代码扩展 U-SQL 脚本
重要
Azure Data Lake Analytics已于 2024 年 2 月 29 日停用。 通过此公告了解更多信息。
对于数据分析,你的组织可以使用 Azure Synapse Analytics 或 Microsoft Fabric。
先决条件
开始之前,请确保 Azure Data Lake Analytics 帐户已安装 Python 扩展。
- 导航到Azure 门户中的Data Lake Analytics帐户
- 在左侧菜单中的“入门”下,选择“示例脚本”
- 选择 “安装 U-SQL 扩展 ”,然后选择 “确定”
概述
通过 U-SQL 的 Python 扩展,开发人员可以执行大规模并发执行的 Python 代码。 以下示例演示了基本步骤:
- 使用
REFERENCE ASSEMBLY
语句为 U-SQL 脚本启用 Python 扩展 - 使用
REDUCE
操作对某个键的输入数据进行分区 - U-SQL 的 Python 扩展包括内置化简器 (
Extension.Python.Reducer
),可在分配给每个化简器的顶点上运行 Python 代码 - U-SQL 脚本包含嵌入式 Python 代码,该代码具有称为
usqlml_main
的函数,可接受 pandas DataFrame 作为输入并返回 pandas DataFrame 作为输出。
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 如何与 U-SQL 集成
数据类型
- U-SQL 中的字符串和数字列在 Pandas 和 U-SQL 之间按原样转换
- U-SQL Null 与 Pandas
NA
值相互转换
架构
- U-SQL 不支持 Pandas 中的索引向量。 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 GB。 由于输入和输出数据帧必须存在于 Python 代码的内存中,因此输入和输出的总大小不能超过 6 GB。