Aracılığıyla paylaş


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.Reducerkullanarak 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 kodlu stringolarak 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: trueayarlanarak .

Ş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.usqlbakı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();

Sonraki adımlar