在 Azure Data Lake Analytics 中使用 Python 程式碼擴充 U-SQL 指令碼

重要

Azure Data Lake Analytics 於 2024 年 2 月 29 日淘汰。 使用此公告深入瞭解。

針對數據分析,您的組織可以使用 Azure Synapse AnalyticsMicrosoft 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。

下一步