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 を超えることはできません。