重要
Azure Data Lake Analytics 于 2024 年 2 月 29 日停用。 了解更多 的信息,请参阅此公告。
对于数据分析,组织可以使用 Azure Synapse Analytics 或 Microsoft Fabric。
先决条件
在开始之前,请确保 Python 扩展安装在 Azure Data Lake Analytics 帐户中。
- 在 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 集成
数据类型
- 在 Pandas 和 U-SQL 之间,U-SQL 中的字符串列和数值列按原样转换。
- U-SQL Null 值可以转换为 Pandas
NA
值,也可以从 PandasNA
值转换回来。
模式
- U-SQL 不支持 Pandas 中的索引向量。 Python 函数中的所有输入数据帧始终具有从 0 到行数减 1 的 64 位数字索引。
- U-SQL 数据集不能具有重复的列名称
- U-SQL 数据集列名称不是字符串。
Python 版本
仅支持 Python 3.5.1(已针对 Windows 编译)。
标准 Python 模块
包括所有标准 Python 模块。
更多 Python 模块
除了标准 Python 库,还包括几个常用的 Python 库:
- 熊猫
- numpy
- numexpr
异常消息
目前,Python 代码中的异常显示为泛型顶点故障。 将来,U-SQL 作业错误消息将显示 Python 异常消息。
输入和输出大小限制
每个顶点分配的内存量有限。 目前,对于 AU,此限制为 6 GB。 由于输入和输出数据帧必须存在于 Python 代码的内存中,因此输入和输出的总大小不能超过 6 GB。