Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Azure Data Lake Analytics wurde am 29. Februar 2024 eingestellt. In dieser Ankündigung erhalten Sie weitere Informationen.
Bei Datenanalysen kann Ihre Organisation Azure Synapse Analytics oder Microsoft Fabricverwenden.
Das folgende Beispiel veranschaulicht die grundlegenden Schritte für die Bereitstellung von R-Code:
- Verwenden Sie die
REFERENCE ASSEMBLYAnweisung, um R-Erweiterungen für das U-SQL-Skript zu aktivieren. - Verwenden Sie den
REDUCEVorgang, um die Eingabedaten auf einem Schlüssel zu partitionieren. - Die R-Erweiterungen für U-SQL enthalten einen integrierten Reducer (
Extension.R.Reducer), der R-Code für jeden Vertex ausführt, der dem Reduzierungselement zugewiesen ist. - Die Verwendung dedizierter, benannter Datenframes, die
inputFromUSQLundoutputToUSQLgenannt werden, um Daten zwischen U-SQL und R zu übergeben. Die Namen der Eingabe- und Ausgabedatenframe-IDs sind festgelegt (d. h. Benutzer können diese vordefinierten Namen der Eingabe- und Ausgabedatenframe-IDs nicht ändern).
Einbetten von R-Code in das U-SQL-Skript
Sie können den R-Code Ihres U-SQL-Skripts inline verwenden, indem Sie den Befehlsparameter des Extension.R.Reducer verwenden. Sie können z. B. das R-Skript als Zeichenfolgenvariable deklarieren und als Parameter an den Reducer übergeben.
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");
Behalten Sie den R-Code in einer separaten Datei bei, und verweisen Sie darauf auf das U-SQL-Skript.
Im folgenden Beispiel wird eine komplexere Verwendung veranschaulicht. In diesem Fall wird der R-Code als RESSOURCE bereitgestellt, die das U-SQL-Skript ist.
Speichern Sie diesen R-Code als separate Datei.
load("my_model_LM_Iris.rda")
outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
Verwenden Sie ein U-SQL-Skript, um dieses R-Skript mit der DEPLOY RESOURCE-Anweisung bereitzustellen.
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();
Wie R mit U-SQL integriert wird
Datentypen
- Zeichenfolgen- und numerische Spalten aus U-SQL werden zwischen dem R DataFrame und U-SQL konvertiert as-is [unterstützte Typen:
double,string,bool,integer,byte]. - Der
FactorDatentyp wird in U-SQL nicht unterstützt. -
byte[]muss als base64-codiert serialisiertstringwerden. - U-SQL-Zeichenfolgen können im R-Code in Faktoren konvertiert werden, sobald ein U-SQL-R-Eingabedatenrahmen erstellt wurde oder der Reducer-Parameter
stringsAsFactors: truefestgelegt ist.
Schemata
- U-SQL-Datasets können keine doppelten Spaltennamen haben.
- Spaltennamen von U-SQL-Datasets müssen Zeichenfolgen sein.
- Spaltennamen müssen in U-SQL- und R-Skripts identisch sein.
- Readonly-Spalte kann nicht Teil des Ausgabedatenframes sein. Da Readonly-Spalten automatisch in die U-SQL-Tabelle eingefügt werden, wenn sie Teil des Ausgabeschemas von UDO ist.
Funktionale Beschränkungen
- Die R-Engine kann nicht zweimal im selben Prozess instanziiert werden.
- Derzeit unterstützt U-SQL keine Combiner-UDOs für die Vorhersage mithilfe partitionierter Modelle, die mit Reducer UDOs generiert wurden. Benutzer können die partitionierten Modelle als Ressource deklarieren und in ihrem R-Skript verwenden (siehe Beispielcode
ExtR_PredictUsingLMRawStringReducer.usql)
R-Versionen
Nur R 3.2.2 wird unterstützt.
Standard R-Module
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
Einschränkungen bei der Eingabe- und Ausgabegröße
Jeder Scheitelpunkt verfügt über einen begrenzten Arbeitsspeicher, der ihm zugewiesen ist. Da die Eingabe- und Ausgabedatenframes im Arbeitsspeicher im R-Code vorhanden sein müssen, darf die Gesamtgröße für die Eingabe und Ausgabe 500 MB nicht überschreiten.
Beispielcode
Weitere Beispielcode ist in Ihrem Data Lake Store-Konto verfügbar, nachdem Sie die U-SQL Advanced Analytics-Erweiterungen installiert haben. Der Pfad für weitere Beispielcode lautet: <your_account_address>/usqlext/samples/R.
Bereitstellen von benutzerdefinierten R-Modulen mit U-SQL
Erstellen Sie zunächst ein benutzerdefiniertes R-Modul, zippen Sie es und laden Sie die komprimierte Datei dann in Ihren ADL-Speicher hoch. Im Beispiel laden wir magittr_1.5.zip in das Stammverzeichnis des Standard-ADLS-Kontos für das ADLA-Konto, das wir verwenden, hoch. Nachdem Sie das Modul in den ADL-Speicher hochgeladen haben, deklarieren Sie es mithilfe der Anweisung DEPLOY RESOURCE, um es in Ihrem U-SQL-Skript verfügbar zu machen, und rufen Sie install.packages auf, um es zu installieren.
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();