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