Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Azure Data Lake Analytics is op 29 februari 2024 buiten gebruik gesteld. Meer informatie vindt u in deze aankondiging.
Voor gegevensanalyse kan uw organisatie Azure Synapse Analytics of Microsoft Fabric gebruiken.
In het volgende voorbeeld ziet u de basisstappen voor het implementeren van R-code:
- Gebruik de
REFERENCE ASSEMBLYinstructie om R-extensies in te schakelen voor het U-SQL-script. - Gebruik de
REDUCEbewerking om de invoergegevens op een sleutel te partitioneren. - De R-extensies voor U-SQL bevatten een ingebouwde reducer (
Extension.R.Reducer) waarmee R-code wordt uitgevoerd op elk hoekpunt dat is toegewezen aan de reducer. - Het gebruik van toegewezen benoemde gegevensframes die respectievelijk worden aangeroepen
inputFromUSQLenoutputToUSQLom gegevens door te geven tussen U-SQL en R. De namen van invoer- en uitvoer-DataFrame-id's zijn vast (dat wil gezegd, gebruikers kunnen deze vooraf gedefinieerde namen van invoer- en uitvoer-DataFrame-id's niet wijzigen).
R-code insluiten in het U-SQL-script
U kunt de R-code van uw U-SQL-script inline maken met behulp van de opdrachtparameter van de Extension.R.Reducer. U kunt bijvoorbeeld het R-script declareren als een tekenreeksvariabele en dit doorgeven als een parameter aan de reducer.
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");
Behoud de R-code in een afzonderlijk bestand en verwijs ernaar het U-SQL-script
In het volgende voorbeeld ziet u een complexer gebruik. In dit geval wordt de R-code geïmplementeerd als een RESOURCE die het U-SQL-script is.
Sla deze R-code op als een afzonderlijk bestand.
load("my_model_LM_Iris.rda")
outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
Gebruik een U-SQL-script om dat R-script te implementeren met de INSTRUCTIE DEPLOY RESOURCE.
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();
Hoe R integreert met U-SQL
Gegevenssoorten
- Tekenreeks en numerieke kolommen van U-SQL worden geconverteerd as-is tussen R DataFrame en U-SQL [ondersteunde typen:
double,string,bool,integer,byte]. - Het
Factorgegevenstype wordt niet ondersteund in U-SQL. -
byte[]moet worden geserialiseerd als een base64-gecodeerdstring. - U-SQL-tekenreeksen kunnen worden geconverteerd naar factoren in R-code, zodra U-SQL R-invoergegevensframe maakt of door de reducerparameter
stringsAsFactors: truein te stellen.
schemas
- U-SQL-gegevenssets kunnen geen dubbele kolomnamen hebben.
- Kolomnamen van U-SQL-gegevenssets moeten tekenreeksen zijn.
- Kolomnamen moeten hetzelfde zijn in U-SQL- en R-scripts.
- Een niet-bewerkbare kolom kan geen deel uitmaken van het uitvoerdataframe. Omdat alleen-lezen kolommen automatisch worden teruggeplaatst in de U-SQL-tabel als deze deel uitmaken van het uitvoerschema van de UDO.
Functionele beperkingen
- De R-engine kan niet tweemaal in hetzelfde proces worden geïnstantieerd.
- Momenteel biedt U-SQL geen ondersteuning voor Combiner UDF's voor voorspelling met behulp van gepartitioneerde modellen die zijn gegenereerd met reducer-UDF's. Gebruikers kunnen de gepartitioneerde modellen als resource declareren en gebruiken in hun R-script (zie voorbeeldcode
ExtR_PredictUsingLMRawStringReducer.usql)
R-versies
Alleen R 3.2.2 wordt ondersteund.
Standard R-modules
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
Beperkingen voor invoer- en uitvoergrootte
Aan elk hoekpunt is een beperkte hoeveelheid geheugen toegewezen. Omdat de invoer- en uitvoergegevensframes in het geheugen in de R-code moeten bestaan, mag de totale grootte voor de invoer en uitvoer niet groter zijn dan 500 MB.
Voorbeeldcode
Er is meer voorbeeldcode beschikbaar in uw Data Lake Store-account nadat u de U-SQL Advanced Analytics-extensies hebt geïnstalleerd. Het pad voor meer voorbeeldcode is: <your_account_address>/usqlext/samples/R.
Aangepaste R-modules implementeren met U-SQL
Maak eerst een aangepaste R-module en zip deze en upload vervolgens het aangepaste R-modulebestand naar uw ADL-archief. In het voorbeeld uploaden we magittr_1.5.zip naar de hoofdmap van het standaard ADLS-account voor het ADLA-account dat we gebruiken. Zodra u de module hebt geüpload naar het ADL-archief, declareert u deze als DEPLOY RESOURCE om deze beschikbaar te maken in uw U-SQL-script en roept install.packages u aan om deze te installeren.
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();