次の方法で共有


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 portal で Data Lake Analytics アカウントに移動する
  • 左側のメニューの [概要] で[サンプル スクリプト] を選択します
  • [ U-SQL 拡張機能のインストール ] を選択し、[ OK] を選択します

概要

U-SQL 用の Python 拡張機能を使用すると、開発者は Python コードの超並列実行を実行できます。 次の例は、基本的な手順を示しています。

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

スキーマ

  • Pandas のインデックス ベクターは、U-SQL ではサポートされていません。 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 を超えることはできません。

次のステップ