Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
O Azure Data Lake Analytics foi desativado em 29 de fevereiro de 2024. Saiba mais com este anúncio.
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 R para o script U-SQL. - Use a
REDUCEoperação para particionar os dados de entrada em uma chave. - As extensões 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
inputFromUSQLeoutputToUSQLrespectivamente para passar dados entre U-SQL e R. Os nomes dos identificadores 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).
Incorporação de código R no script U-SQL
Você pode inserir o código R do script U-SQL usando o parâmetro command 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 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");
Mantenha o código R em um arquivo separado e faça referência a ele o script U-SQL
O exemplo a seguir ilustra um uso mais complexo. Nesse caso, o código R é implantado como um RECURSO que é o script U-SQL.
Salve este 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
- String e colunas numéricas do U-SQL são convertidas as-is entre R DataFrame e U-SQL [tipos suportados:
double,string,bool,integer,byte]. - O
Factortipo de dados não é suportado no U-SQL. -
byte[]deve ser serializado como um codificadostringem base64. - As cadeias de caracteres U-SQL podem ser convertidas em fatores no código R, uma vez que o U-SQL cria o dataframe de entrada R ou definindo o parâmetro
stringsAsFactors: trueredutor.
Esquemas
- Os conjuntos de dados U-SQL não podem ter nomes de colunas duplicados.
- Os nomes das colunas dos conjuntos de dados U-SQL devem ser cadeias de caracteres.
- Os nomes das colunas devem ser os mesmos nos scripts U-SQL e R.
- A coluna somente leitura não pode fazer parte do dataframe de saída. Porque as colunas somente leitura são automaticamente injetadas de volta na tabela U-SQL se ela fizer parte do esquema de saída do UDO.
Limitações funcionais
- O R Engine não pode ser instanciado duas vezes no mesmo processo.
- Atualmente, o U-SQL não suporta UDOs combinadores para previsão usando modelos particionados gerados usando UDOs redutores. Os usuários podem declarar os modelos particionados como recurso e usá-los em seu script R (consulte o código
ExtR_PredictUsingLMRawStringReducer.usqlde exemplo)
Versões R
Apenas a R 3.2.2 é suportada.
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 saída não pode exceder 500 MB.
Código de exemplo
Mais código de exemplo está disponível em sua conta do Repositório Data Lake depois de instalar as extensões do U-SQL Advanced Analytics. 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 R e compacte-o e, em seguida, carregue o arquivo de módulo personalizado R compactado para sua loja ADL. No exemplo, carregaremos magittr_1.5.zip para a raiz da conta ADLS padrão da conta ADLA que estamos usando. Depois de carregar o módulo para o armazenamento ADL, declare-o como use DEPLOY RESOURCE para disponibilizá-lo em seu script U-SQL e chame 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();