Share via


Azure Data Lake Analytics で Python コードを使用した U-SQL スクリプトの拡張

重要

Azure Data Lake Analyticsは、2024 年 2 月 29 日に廃止されました。 詳細については、このお知らせを参照してください。

データ分析の場合、organizationは Azure Synapse Analytics または Microsoft Fabric を使用できます。

前提条件

始める前に、Azure Data Lake Analytics アカウントに Python 拡張機能がインストールされていることを確認します。

  • Azure portalでData Lake Analytics アカウントに移動します
  • 左側のメニューの [作業の開始] で、[サンプル スクリプト] を選択します
  • [ U-SQL 拡張機能のインストール ] を選択し、[ OK] を選択します

概要

U-SQL 用の Python 拡張機能では、開発者が Python コードの膨大な並列実行を実行できるようにします。 基本的な手順を以下の例で示します。

  • REFERENCE ASSEMBLY ステートメントを使用して、U-SQL スクリプト用の Python 拡張機能を有効にします
  • REDUCE 操作を使用してキーの入力データをパーティション化します
  • U-SQL 用の Python 拡張機能には、レジューサ (Extension.Python.Reducer) が組み込まれており、レジューサに割り当てられている各頂点で Python コードを実行します
  • U-SQL スクリプトには、 "usqlml_main" という機能を持つ埋め込み型 Python コードが含まれています。この機能は、入力として 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" 値に双方向で変換されます

スキーマ

  • Pandas のインデックス ベクトルは、U-SQL ではサポートされていません。 Python 関数内のすべての入力データ フレームには、常に 0 から、行数から 1 を引いた数までの 64 ビットの数値インデックスがあります。
  • U-SQL データセットに列名を重複することはできません
  • 文字列ではない U-SQL データセットの列名。

Python のバージョン

Python 3.5.1 (Windows 用にコンパイル) のみサポートされています。

標準的な Python モジュール

すべての標準的な Python モジュールが含まれます。

その他の Python モジュール

標準的な Python ライブラリの他にも、一般的に使用される Python ライブラリの一部が含まれます。

  • pandas
  • numpy
  • numexpr

例外メッセージ

現時点では、Python コードの例外は一般的な頂点のエラーとして表示されます。 今後、U-SQL ジョブのエラー メッセージでは、Python の例外メッセージが表示されます。

入力と出力のサイズ制限

各頂点には、割り当てられたメモリ量に制限があります。 現在、AU の制限は 6 GB です。 入力と出力の DataFrame は Python コードのメモリ内に存在する必要があるため、入力と出力の合計サイズは 6 GB を超えることはできません。

次のステップ