Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
O Azure Data Lake Analytics se aposentou em 29 de fevereiro de 2024. Saiba mais com este comunicado.
Para análise de dados, sua organização pode usar o Azure Synapse Analytics ou o Microsoft Fabric.
O exemplo a seguir ilustra as etapas básicas para implantar o código R:
- Use a
REFERENCE ASSEMBLYinstrução para habilitar extensões de R para o Script U-SQL. - Use a
REDUCEoperação para particionar os dados de entrada em uma chave. - As extensões de R para U-SQL incluem um redutor interno (
Extension.R.Reducer) que executa o código R em cada vértice atribuído ao redutor. - Uso de quadros de dados nomeados dedicados chamados
inputFromUSQLeoutputToUSQL, respectivamente, para passar dados entre U-SQL e R. Os nomes do identificador DataFrame de entrada e saída são fixos (ou seja, os usuários não podem alterar esses nomes predefinidos de identificadores dataframe de entrada e saída).
Inserindo o código R no script U-SQL
Você pode embutido o código R do script U-SQL usando o parâmetro de comando do Extension.R.Reducer. Por exemplo, você pode declarar o script R como uma variável de cadeia de caracteres e passá-lo como um parâmetro para o Redutor.
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");
Manter o código R em um arquivo separado e referenciá-lo ao script U-SQL
O exemplo a seguir ilustra um uso mais complexo. Nesse caso, o código R é implantado como um RESOURCE que é o script U-SQL.
Salve esse código R como um arquivo separado.
load("my_model_LM_Iris.rda")
outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
Use um script U-SQL para implantar esse script R com a instrução 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();
Como o R se integra ao U-SQL
Tipos de dados
- As colunas de cadeia de caracteres e numéricas do U-SQL são convertidas as-is entre R DataFrame e U-SQL [tipos com suporte:
double, ,string,bool,integerbyte]. - O tipo de dados
Factornão é suportado no U-SQL. -
byte[]deve ser serializado como umstringcodificado em base64. - Cadeias de caracteres U-SQL podem ser convertidas em fatores no código R, depois que U-SQL criar o dataframe de entrada R, ou ao definir o parâmetro redutor.
Esquemas
- Os conjuntos de dados U-SQL não podem ter nomes de coluna duplicados.
- Os nomes de colunas de conjuntos de dados U-SQL devem ser cadeias de caracteres.
- Os nomes de coluna devem ser os mesmos em scripts U-SQL e R.
- A coluna Readonly não pode fazer parte do dataframe de saída. Como as colunas somente leitura são automaticamente injetadas de volta na tabela U-SQL se ela faz parte do esquema de saída do UDO.
Limitações funcionais
- O Mecanismo R não pode ser instanciado duas vezes no mesmo processo.
- Atualmente, o U-SQL não dá suporte a UDOs combinados para previsão usando modelos particionados gerados usando UDOs do Redutor. Os usuários podem declarar os modelos particionados como recurso e usá-los em seu Script R (consulte o código de exemplo
ExtR_PredictUsingLMRawStringReducer.usql)
Versões do R
Há suporte apenas para R 3.2.2.
Módulos R padrão
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
Limitações de tamanho de entrada e saída
Cada vértice tem uma quantidade limitada de memória atribuída a ele. Como os DataFrames de entrada e saída devem existir na memória no código R, o tamanho total da entrada e da saída não pode exceder 500 MB.
Código de exemplo
Mais código de exemplo está disponível em sua conta do Data Lake Store depois que você instala as extensões da Análise Avançada do U-SQL. O caminho para mais código de exemplo é: <your_account_address>/usqlext/samples/R.
Implantando módulos R personalizados com U-SQL
Primeiro, crie um módulo personalizado do R, compacte-o e então carregue o arquivo compactado do módulo personalizado do R em seu armazenamento ADL. No exemplo, faremos o upload de magittr_1.5.zip na raiz da conta padrão do ADLS para a conta do ADLA que estamos usando. Depois de carregar o módulo no repositório ADL, declare-o como DEPLOY RESOURCE para disponibilizá-lo em seu script U-SQL e utilize install.packages para instalá-lo.
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();