共用方式為


在 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 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 之間進行 as-is 轉換。
  • U-SQL Null 會從 Pandas NA 值來回轉換

模式

  • 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。 由於輸入和輸出 DataFrame 必須存在於 Python 程式代碼的記憶體中,輸入和輸出的總大小不能超過 6 GB。

後續步驟