次の方法で共有


Azure Data Lake Analytics で R コードを使用して U-SQL スクリプトを拡張する

重要

Azure Data Lake Analytics は、2024 年 2 月 29 日に廃止されました。 このお知らせでさらに学んでください。

データ分析の場合、組織は Azure Synapse Analytics 使用することも、Microsoft Fabric することもできます。

次の例は、R コードをデプロイするための基本的な手順を示しています。

  • U-SQL スクリプトの R 拡張機能を有効にするには、REFERENCE ASSEMBLY ステートメントを使用します。
  • REDUCE 操作を使用して、キーの入力データをパーティション分割します。
  • U-SQL の R 拡張機能には、レジューサーに割り当てられた各頂点で R コードを実行する組み込みのレジューサー (Extension.R.Reducer) が含まれています。
  • U-SQL と R の間でデータを渡すために、それぞれ inputFromUSQLoutputToUSQL と呼ばれる専用の名前付きデータ フレームを使用します。入力と出力の DataFrame 識別子の名前は固定されています (つまり、ユーザーは入力と出力の DataFrame 識別子のこれらの定義済みの名前を変更できません)。

U-SQL スクリプトへの R コードの埋め込み

Extension.R.Reducerのコマンド パラメーターを使用して、U-SQL スクリプトの R コードをインライン化できます。 たとえば、R スクリプトを文字列変数として宣言し、レジューサーにパラメーターとして渡すことができます。

REFERENCE ASSEMBLY [ExtR];

DECLARE @myRScript = @"
inputFromUSQL$Species = as.factor(inputFromUSQL$Species)
lm.fit=lm(unclass(Species)~.-Par, data=inputFromUSQL)
#do not return readonly columns and make sure that the column names are the same in usql and r cripts,
outputToUSQL=data.frame(summary(lm.fit)$coefficients)
colnames(outputToUSQL) <- c(""Estimate"", ""StdError"", ""tValue"", ""Pr"")
outputToUSQL
";

@RScriptOutput = REDUCE … USING new Extension.R.Reducer(command:@myRScript, ReturnType:"dataframe");

R コードを別のファイルに保持し、U-SQL スクリプトを参照する

次の例は、より複雑な使用方法を示しています。 この場合、R コードは U-SQL スクリプトである RESOURCE としてデプロイされます。

この R コードを別のファイルとして保存します。

load("my_model_LM_Iris.rda")
outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))

U-SQL スクリプトを使用して、DEPLOY RESOURCE ステートメントを使用してその R スクリプトをデプロイします。

REFERENCE ASSEMBLY [ExtR];
DEPLOY RESOURCE @"/usqlext/samples/R/RinUSQL_PredictUsingLinearModelasDF.R";
DEPLOY RESOURCE @"/usqlext/samples/R/my_model_LM_Iris.rda";
DECLARE @IrisData string = @"/usqlext/samples/R/iris.csv";
DECLARE @OutputFilePredictions string = @"/my/R/Output/LMPredictionsIris.txt";
DECLARE @PartitionCount int = 10;
@InputData =
    EXTRACT
        SepalLength double,
        SepalWidth double,
        PetalLength double,
        PetalWidth double,
        Species string
    FROM @IrisData
    USING Extractors.Csv();
@ExtendedData =
    SELECT
        Extension.R.RandomNumberGenerator.GetRandomNumber(@PartitionCount) AS Par,
        SepalLength,
        SepalWidth,
        PetalLength,
        PetalWidth
    FROM @InputData;
// Predict Species
@RScriptOutput = REDUCE @ExtendedData ON Par
    PRODUCE Par, fit double, lwr double, upr double
    READONLY Par
    USING new Extension.R.Reducer(scriptFile:"RinUSQL_PredictUsingLinearModelasDF.R", rReturnType:"dataframe", stringsAsFactors:false);
    OUTPUT @RScriptOutput TO @OutputFilePredictions USING Outputters.Tsv();

R と U-SQL の統合方法

データ型

  • U-SQL の文字列列と数値列は、R DataFrame と U-SQL の間で as-is 変換されます [サポートされている型: doublestringboolintegerbyte]。
  • Factor データ型は U-SQL ではサポートされていません。
  • byte[] は、base64 でエンコードされた stringとしてシリアル化する必要があります。
  • U-SQL 文字列は、U-SQL で R 入力データフレームを作成するか、リデューサーパラメーター stringsAsFactors: trueを設定することで、R コードで要素に変換できます。

スキーマ

  • U-SQL データセットに重複する列名を指定することはできません。
  • U-SQL データセットの列名は文字列である必要があります。
  • 列名は、U-SQL スクリプトと R スクリプトで同じである必要があります。
  • 読み取り専用の列は、出力データフレームの一部に含めることはできません。 UDO の出力スキーマの一部である場合、読み取り専用の列は自動的に U-SQL テーブルに挿入されます。

機能上の制限事項

  • R エンジンを同じプロセスで 2 回インスタンス化することはできません。
  • 現在、U-SQL では、Reducer UDO を使用して生成されたパーティション分割モデルを使用した予測用のコンバイナー UDO はサポートされていません。 ユーザーは、パーティション分割されたモデルをリソースとして宣言し、R スクリプトで使用できます (サンプル コード ExtR_PredictUsingLMRawStringReducer.usqlを参照してください)

R バージョン

R 3.2.2 のみがサポートされています。

標準 R モジュール

base
boot
Class
Cluster
codetools
compiler
datasets
doParallel
doRSR
foreach
foreign
Graphics
grDevices
grid
iterators
KernSmooth
lattice
MASS
Matrix
Methods
mgcv
nlme
Nnet
Parallel
pkgXMLBuilder
RevoIOQ
revoIpe
RevoMods
RevoPemaR
RevoRpeConnector
RevoRsrConnector
RevoScaleR
RevoTreeView
RevoUtils
RevoUtilsMath
Rpart
RUnit
spatial
splines
Stats
stats4
survival
Tcltk
Tools
translations
utils
XML

入力サイズと出力サイズの制限事項

すべての頂点に割り当てられるメモリの量は限られています。 入力と出力のデータフレームは R コードのメモリ内に存在する必要があるため、入力と出力の合計サイズは 500 MB を超えることはできません。

サンプル コード

U-SQL Advanced Analytics 拡張機能をインストールした後、Data Lake Store アカウントでその他のサンプル コードを使用できます。 その他のサンプル コードのパスは、<your_account_address>/usqlext/samples/Rです。

U-SQL を使用したカスタム R モジュールのデプロイ

まず、R カスタム モジュールを作成し、zip 圧縮してから、zip 形式の R カスタム モジュール ファイルを ADL ストアにアップロードします。 この例では、使用している ADLA アカウントの既定の ADLS アカウントのルートに magittr_1.5.zip をアップロードします。 モジュールを ADL ストアにアップロードしたら、DEPLOY RESOURCE を使用して U-SQL スクリプトで使用できるように宣言し、install.packages を呼び出してインストールします。

REFERENCE ASSEMBLY [ExtR];
DEPLOY RESOURCE @"/magrittr_1.5.zip";
DECLARE @IrisData string =  @"/usqlext/samples/R/iris.csv";
DECLARE @OutputFileModelSummary string = @"/R/Output/CustomPackages.txt";
// R script to run
DECLARE @myRScript = @"
# install the magrittr package,
install.packages('magrittr_1.5.zip', repos = NULL),
# load the magrittr package,
require(magrittr),
# demonstrate use of the magrittr package,
2 %>% sqrt
";
@InputData =
EXTRACT SepalLength double,
SepalWidth double,
PetalLength double,
PetalWidth double,
Species string
FROM @IrisData
USING Extractors.Csv();
@ExtendedData =
SELECT 0 AS Par,
*
FROM @InputData;
@RScriptOutput = REDUCE @ExtendedData ON Par
PRODUCE Par, RowId int, ROutput string
READONLY Par
USING new Extension.R.Reducer(command:@myRScript, rReturnType:"charactermatrix");
OUTPUT @RScriptOutput TO @OutputFileModelSummary USING Outputters.Tsv();

次のステップ