Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Usługa Azure Data Lake Analytics została wycofana 29 lutego 2024 r. Dowiedz się więcej z tym ogłoszeniem.
Na potrzeby analizy danych organizacja może używać usługi Azure Synapse Analytics lub Microsoft Fabric.
Poniższy przykład ilustruje podstawowe kroki wdrażania kodu języka R:
- Użyj instrukcji
REFERENCE ASSEMBLY, aby włączyć rozszerzenia języka R dla skryptu U-SQL. - Użyj operacji ,
REDUCEaby podzielić dane wejściowe na klucz. - Rozszerzenia języka R dla języka U-SQL obejmują wbudowany reduktor (
Extension.R.Reducer), który uruchamia kod języka R na każdym wierzchołku przypisanym do reduktora. - Użycie dedykowanych nazwanych ramek danych o nazwie
inputFromUSQLioutputToUSQLodpowiednio do przekazywania danych między językami U-SQL i R. Nazwy identyfikatorów wejściowych i wyjściowych ramek danych są stałe (czyli użytkownicy nie mogą zmieniać tych wstępnie zdefiniowanych nazw identyfikatorów wejściowych i wyjściowych ramek danych).
Osadzanie kodu języka R w skrypcie U-SQL
Kod języka R można wstawić do skryptu U-SQL, używając parametru polecenia Extension.R.Reducer. Można na przykład zadeklarować skrypt języka R jako zmienną ciągu i przekazać go jako parametr do modułu redukcji.
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");
Zachowaj kod języka R w osobnym pliku i odwołuj się do niego za pomocą skryptu U-SQL
Poniższy przykład ilustruje bardziej złożone użycie. W takim przypadku kod języka R jest wdrażany jako zasób, który jest skryptem U-SQL.
Zapisz ten kod języka R jako oddzielny plik.
load("my_model_LM_Iris.rda")
outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
Użyj skryptu U-SQL, aby wdrożyć ten skrypt języka R za pomocą instrukcji 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();
Jak język R integruje się z językiem U-SQL
Typy danych
- Kolumny ciągowe i liczbowe z języka U-SQL są konwertowane as-is między ramkami danych języka R i językiem U-SQL [obsługiwane typy:
double, ,stringbool,integer,byte]. - Typ
Factordanych nie jest obsługiwany w języku U-SQL. -
byte[]musi być serializowany jakostringzakodowany algorytmem base64. - Ciągi U-SQL można konwertować na czynniki w kodzie języka R, po utworzeniu przez U-SQL ramki danych wejściowych dla języka R lub ustawieniu parametru reduktora
stringsAsFactors: true.
Schemat
- Zestawy danych U-SQL nie mogą mieć zduplikowanych nazw kolumn.
- Nazwy kolumn zestawów danych U-SQL muszą być ciągami.
- Nazwy kolumn muszą być takie same w skryptach U-SQL i R.
- Kolumna tylko do odczytu nie może być częścią ramki danych wyjściowych. Ponieważ kolumny tylko do odczytu są automatycznie ponownie wstrzykiwane do tabeli U-SQL, jeśli stanowią część schematu wyjściowego UDO.
Ograniczenia funkcjonalne
- Nie można utworzyć wystąpienia aparatu języka R dwukrotnie w tym samym procesie.
- Obecnie język U-SQL nie obsługuje Kombinera UDO do przewidywania przy użyciu partycjonowanych modeli generowanych przy użyciu Reducera UDO. Użytkownicy mogą deklarować partycjonowane modele jako zasób i używać ich w skrydycie języka R (zobacz przykładowy kod
ExtR_PredictUsingLMRawStringReducer.usql)
Wersje języka R
Obsługiwane są tylko wersje R 3.2.2.
Standardowe moduły języka 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
Ograniczenia rozmiaru danych wejściowych i wyjściowych
Każdy wierzchołek ma przypisaną ograniczoną ilość pamięci. Ponieważ ramki danych wejściowych i wyjściowych muszą istnieć w pamięci w kodzie języka R, całkowity rozmiar danych wejściowych i wyjściowych nie może przekraczać 500 MB.
Przykładowy kod
Więcej przykładowego kodu jest dostępnych na koncie usługi Data Lake Store po zainstalowaniu rozszerzeń U-SQL Advanced Analytics. Ścieżka do bardziej przykładowego kodu to: <your_account_address>/usqlext/samples/R.
Wdrażanie niestandardowych modułów języka R przy użyciu języka U-SQL
Najpierw utwórz niestandardowy moduł R i spakuj go, a następnie przekaż spakowany plik niestandardowego modułu R do magazynu ADL. W tym przykładzie prześlemy magittr_1.5.zip do katalogu głównego domyślnego konta ADLS dla konta ADLA, którego używamy. Po przekazaniu modułu do magazynu ADL zadeklaruj go poleceniem DEPLOY RESOURCE, aby udostępnić go w skrypcie U-SQL, i wywołaj polecenie install.packages w celu jego zainstalowania.
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();