R eklentisi (Önizleme)
R eklentisi R betiği kullanarak kullanıcı tanımlı bir işlev (UDF) çalıştırır.
Betik, girdi olarak tablosal verileri alır ve tablosal çıkış üretir. Eklentinin çalışma zamanı, kümenin düğümlerindeki bir korumalı alanda barındırılır. Korumalı alan, yalıtılmış ve güvenli bir ortam sağlar.
Syntax
T|
evaluate
[hint.distribution
=
(single
| per_node
)] r(
output_schema,
betiği [,
script_parameters] [,
external_artifacts])
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | Açıklama |
---|---|---|---|
output_schema | string |
✔️ | type R kodu tarafından döndürülen tablosal verilerin çıkış şemasını tanımlayan değişmez değer. Biçim: typeof( ColumnName: ColumnType[, ...]) . Örneğin: typeof(col1:string, col2:long) . Giriş şemasını genişletmek için aşağıdaki söz dizimini kullanın: typeof(*, col1:string, col2:long) . |
Komut dosyası | string |
✔️ | Yürütülecek geçerli R betiği. |
script_parameters | dynamic |
R betiğine ayrılmış kargs sözlük olarak geçirilecek ad ve değer çiftlerinden oluşan bir özellik paketi. Daha fazla bilgi için bkz . Ayrılmış R değişkenleri. |
|
hint.distribution |
string |
Eklentinin yürütülmesinin birden çok küme düğümüne dağıtılmasıyla ilgili ipucu. single varsayılan değerdir. single , betiğin tek bir örneğinin sorgu verilerinin tamamı üzerinde çalıştırılacağı anlamına gelir. per_node R bloğundan önceki sorgu dağıtılırsa, betiğin bir örneğinin içerdiği veriler üzerinde her düğümde çalıştırılacağı anlamına gelir. |
|
external_artifacts | dynamic |
Bulut depolama alanından erişilebilen yapıtlar için ad ve URL çiftlerinden oluşan bir özellik paketi. Betiğin çalışma zamanında kullanılabilmesi için kullanılabilir hale getirilebilir. Bu özellik paketinde başvuruda bulunulan URL'lerin kümenin açıklama balonu ilkesine ve genel kullanıma açık bir konuma eklenmesi veya depolama bağlantı dizelerinde açıklandığı gibi gerekli kimlik bilgilerini içermesi gerekir. Yapıtlar, betiğin yerel geçici bir dizinden .\Temp tüketmesi için kullanılabilir hale getirilir. Özellik paketinde sağlanan adlar yerel dosya adları olarak kullanılır. Bkz. Örnek. Daha fazla bilgi için bkz. R eklentisi için paketleri yükleme. |
Ayrılmış R değişkenleri
Aşağıdaki değişkenler Kusto Sorgu Dili ile R kodu arasındaki etkileşim için ayrılmıştır:
df
: Giriş tablosal verileri (yukarıdaki değerleriT
), R DataFrame olarak.kargs
: R sözlüğü olarak script_parameters bağımsız değişkeninin değeri.result
: R betiği tarafından oluşturulan bir R DataFrame. Değer, eklentiyi izleyen herhangi bir Kusto sorgu işlecine gönderilen tablosal veriler olur.
Eklentiyi etkinleştirme
- Eklenti varsayılan olarak devre dışıdır.
- Eklentiyi kümenizin Yapılandırma sekmesindeki Azure portal etkinleştirin veya devre dışı bırakın. Daha fazla bilgi için bkz. Azure Veri Gezgini kümenizde dil uzantılarını yönetme (Önizleme)
R korumalı alan görüntüsü
- R korumalı alan görüntüsü , Windows için R 3.4.4'i temel alır ve Anaconda'nın R Essentials paketindeki paketleri içerir.
Örnekler
range x from 1 to 360 step 1
| evaluate r(
//
typeof(*, fx:double), // Output schema: append a new fx column to original table
//
'result <- df\n' // The R decorated script
'n <- nrow(df)\n'
'g <- kargs$gain\n'
'f <- kargs$cycles\n'
'result$fx <- g * sin(df$x / n * 2 * pi * f)'
//
, bag_pack('gain', 100, 'cycles', 4) // dictionary of parameters
)
| render linechart
Performans ipuçları
Eklentinin giriş veri kümesini gereken minimum miktara (sütunlar/satırlar) düşürün.
Mümkün olduğunda Kusto Sorgu Dili kullanarak kaynak veri kümesindeki filtreleri kullanın.
Kaynak sütunların bir alt kümesinde hesaplama yapmak için eklentiyi çağırmadan önce yalnızca bu sütunları yansıtın.
Betiğinizdeki mantık dağıtılabilir olduğunda kullanın
hint.distribution = per_node
.Giriş verilerini bölümlendirmek için bölüm işlecini de kullanabilirsiniz.
Mümkün olduğunda R betiğinizin mantığını uygulamak için Kusto Sorgu Dili kullanın.
Örnek:
.show operations | where StartedOn > ago(1d) // Filtering out irrelevant records before invoking the plugin | project d_seconds = Duration / 1s // Projecting only a subset of the necessary columns | evaluate hint.distribution = per_node r( // Using per_node distribution, as the script's logic allows it typeof(*, d2:double), 'result <- df\n' 'result$d2 <- df$d_seconds\n' // Negative example: this logic should have been written using Kusto's query language ) | summarize avg = avg(d2)
Kullanım ipuçları
Kusto dize sınırlayıcıları ile R dize sınırlayıcıları arasındaki çakışmaları önlemek için:
- Kusto sorgularında Kusto dize değişmez değerleri için tek tırnak karakterleri (
'
) kullanın. - R betiklerinde R dizesi değişmez değerleri için çift tırnak karakterleri (
"
) kullanın.
- Kusto sorgularında Kusto dize değişmez değerleri için tek tırnak karakterleri (
Azure blob depolama veya genel GitHub deposu gibi bir dış konumda depoladığınız bir betiğin içeriğini almak için dış veri işlecini kullanın.
Örnek:
let script = externaldata(script:string) [h'https://kustoscriptsamples.blob.core.windows.net/samples/R/sample_script.r'] with(format = raw); range x from 1 to 360 step 1 | evaluate r( typeof(*, fx:double), toscalar(script), bag_pack('gain', 100, 'cycles', 4)) | render linechart
R eklentisi için paketleri yükleme
Eklentinin temel görüntüsüne dahil olmayan paketleri yüklemek için bu adım adım yönergeleri izleyin.
Önkoşullar
Paketleri barındırmak için tercihen kümenizle aynı yerde bir blob kapsayıcısı oluşturun. Örneğin,
https://artifactswestus.blob.core.windows.net/r
kümenizin Batı ABD'de olduğunu varsayarsak.Bu konuma erişime izin vermek için kümenin belirtme çizgisi ilkesini değiştirin.
Bu değişiklik Için AllDatabasesAdmin izinleri gerekir.
Örneğin, içinde
https://artifactswestus.blob.core.windows.net/r
bulunan bir bloba erişimi etkinleştirmek için aşağıdaki komutu çalıştırın:
.alter-merge cluster policy callout @'[ { "CalloutType": "sandbox_artifacts", "CalloutUriRegex": "artifactswestus\\.blob\\.core\\.windows\\.net/r/","CanCall": true } ]'
Paketleri yükleme
Aşağıdaki örnek kod parçacıklarında Windows ortamında yerel R makinesinin olduğu varsayılır.
Uygun R sürümünü kullandığınızı doğrulayın; geçerli R Korumalı Alanı sürümü 3.4.4' dür:
> R.Version()["version.string"] $version.string [1] "R version 3.4.4 (2018-03-15)"
Gerekirse buradan indirebilirsiniz.
x64 RGui'yi başlatma
Yüklemek istediğiniz tüm ilgili paketlerle doldurulacak yeni bir boş klasör oluşturun. Bu örnekte brglm2 paketini yüklediğimiz için "C:\brglm2" oluşturulur.
Yeni oluşturulan klasör yolunu lib yollarına ekleyin:
> .libPaths("C://brglm2")
Yeni klasörün artık .libPaths() içindeki ilk yol olduğunu doğrulayın:
> .libPaths() [1] "C:/brglm2" "C:/Program Files/R/R-3.4.4/library"
Bu kurulum tamamlandıktan sonra, yüklediğimiz tüm paketler bu yeni klasöre eklenecektir. şimdi istenen paketi ve bağımlılıklarını yükleyelim:
> install.packages("brglm2")
"Kaynaklardan derlemesi gereken paketleri yüklemek istiyor musunuz?" sorusu açılırsa "Y" yanıtını verin.
Yeni klasörlerin "C:\brglm2" öğesine eklendiğini doğrulayın:
Bu klasördeki tüm öğeleri seçin ve libs.zip (üst klasörü sıkıştırma) gibi öğelere sıkıştırın. Aşağıdaki gibi bir arşiv yapısı almalısınız:
libs.zip:
- brglm2 (klasör)
- enrichwith (klasör)
- numDeriv (klasör)
libs.zip yukarıda ayarlanan blob kapsayıcısına yükleme
Eklentiyi çağırın
r
.- Parametreyi
external_artifacts
ad ve zip dosyasına (SAS belirteci de dahil olmak üzere blobun URL'si) başvuru içeren bir özellik paketiyle belirtin. - Satır içi r kodunuzda öğesini içeri aktarın
zipfile
sandboxutils
ve yöntemini zip dosyasının adıyla çağırıninstall()
.
- Parametreyi
Örnek
brglm2 paketini yükleyin:
print x=1
| evaluate r(typeof(*, ver:string),
'library(sandboxutils)\n'
'zipfile.install("brglm2.zip")\n'
'library("brglm2")\n'
'result <- df\n'
'result$ver <-packageVersion("brglm2")\n'
,external_artifacts=bag_pack(brglm2.zip', 'https://artifactswestus.blob.core.windows.net/r/libs.zip?*** REPLACE WITH YOUR SAS TOKEN ***'))
x | Ver |
---|---|
1 | 1.8.2 |
Arşiv adının (paket çiftindeki ilk değer) *.zip soneki olduğundan emin olun ve adı arşiv adıyla aynı olan klasörlerin sıkıştırmasını açarken çakışmaları önleyin.
Bu özellik desteklenmez.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin