Azure Data Lake Analytics'da R koduyla U-SQL betiklerini genişletme
Önemli
Azure Data Lake Analytics 29 Şubat 2024'te kullanımdan kaldırıldı. Bu duyuru ile daha fazla bilgi edinin.
Veri analizi için kuruluşunuz Azure Synapse Analytics veya Microsoft Fabric kullanabilir.
Aşağıdaki örnekte R kodunu dağıtmaya yönelik temel adımlar gösterilmektedir:
REFERENCE ASSEMBLY
U-SQL Betiği için R uzantılarını etkinleştirmek için deyimini kullanın.REDUCE
Giriş verilerini bir anahtara bölümlendirmek için işlemini kullanın.- U-SQL için R uzantıları, azaltıcıya atanan her köşe üzerinde R kodu çalıştıran yerleşik bir azaltıcı (
Extension.R.Reducer
) içerir. - U-SQL ile R arasında veri geçirmek için sırasıyla ve
outputToUSQL
adlıinputFromUSQL
ayrılmış adlandırılmış veri çerçevelerinin kullanımı düzeltilir (diğer bir ifadeyle, kullanıcılar giriş ve çıkış DataFrame tanımlayıcılarının önceden tanımlanmış bu adlarını değiştiremez).
U-SQL betiğine R kodu ekleme
R kodunu U-SQL betiğinizin komut parametresini Extension.R.Reducer
kullanarak satır içi olarak yazabilirsiniz. Örneğin, R betiğini bir dize değişkeni olarak bildirebilir ve Reducer'a parametre olarak geçirebilirsiniz.
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");
R kodunu ayrı bir dosyada tutun ve U-SQL betiğine başvurun
Aşağıdaki örnekte daha karmaşık bir kullanım gösterilmektedir. Bu durumda, R kodu U-SQL betiği olan bir KAYNAK olarak dağıtılır.
Bu R kodunu ayrı bir dosya olarak kaydedin.
load("my_model_LM_Iris.rda")
outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
Deploy RESOURCE deyimiyle bu R betiğini dağıtmak için bir U-SQL betiği kullanın.
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();
R U-SQL ile Nasıl Tümleşir?
Veri türleri
- U-SQL'den dize ve sayısal sütunlar R DataFrame ile U-SQL arasında olduğu gibi dönüştürülür [desteklenen türler:
double
,string
,bool
,integer
, ]byte
. - Veri
Factor
türü U-SQL'de desteklenmez. byte[]
base64 kodlustring
olarak seri hale getirilmelidir.- U-SQL dizeleri R kodundaki faktörlere dönüştürülebilir, U-SQL R giriş veri çerçevesi oluşturduktan sonra veya azaltıcı parametresi
stringsAsFactors: true
ayarlanarak .
Şemalar
- U-SQL veri kümelerinde yinelenen sütun adları olamaz.
- U-SQL veri kümeleri sütun adları dize olmalıdır.
- Sütun adları U-SQL ve R betiklerinde aynı olmalıdır.
- Salt okunur sütun, çıkış veri çerçevesinin parçası olamaz. Salt okunur sütunlar UDO'nun çıkış şemasının bir parçasıysa U-SQL tablosuna otomatik olarak geri eklenir.
İşlevsel sınırlamalar
- R Altyapısı aynı işlemde iki kez örneklenemez.
- Şu anda U-SQL, Azaltıcı UDO'ları kullanılarak oluşturulan bölümlenmiş modelleri kullanarak tahmin için Birleştirici UDU'ları desteklemez. Kullanıcılar bölümlenmiş modelleri kaynak olarak bildirebilir ve R Betiklerinde kullanabilir (örnek koda
ExtR_PredictUsingLMRawStringReducer.usql
bakın)
R Sürümleri
Yalnızca R 3.2.2 desteklenir.
Standart R modülleri
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
Giriş ve Çıkış boyutu sınırlamaları
Her köşeye sınırlı miktarda bellek atanır. Giriş ve çıkış DataFrame'lerinin R kodunda bellekte bulunması gerektiğinden, giriş ve çıkışın toplam boyutu 500 MB'ı aşamaz.
Örnek kod
U-SQL Gelişmiş Analizler uzantılarını yükledikten sonra Data Lake Store hesabınızda daha fazla örnek kod bulunur. Daha fazla örnek kod için yol: <your_account_address>/usqlext/samples/R
.
U-SQL ile Özel R modülleri dağıtma
İlk olarak bir R özel modülü oluşturup sıkıştırın ve ardından sıkıştırılmış R özel modül dosyasını ADL deponuza yükleyin. Örnekte, magittr_1.5.zip kullanmakta olduğumuz ADLA hesabının varsayılan ADLS hesabının köküne yükleyeceğiz. Modülü ADL deposuna yükledikten sonra U-SQL betiğinizde kullanılabilir hale getirmek ve yüklemek için çağırmak install.packages
için DEPLOY RESOURCE olarak bildirin.
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();