在 Azure Data Lake Analytics 中使用 Python 程式碼擴充 U-SQL 指令碼
重要
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 資料框架作為輸入,並傳回 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 如何與 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 用於 AU。 由於輸入和輸出 DataFrame 必須存在於 Python 程式代碼的記憶體中,因此輸入和輸出的大小總計不能超過 6 GB。