R 外掛程式會使用 R 文稿執行使用者定義函式 (UDF)。
文本會取得表格式數據做為其輸入,併產生表格式輸出。
外掛程式的運行時間裝載於
叢集節點上的沙箱
中。 沙箱提供隔離且安全的環境。
T
|
evaluate
[ (
hint.distribution
=
single
)] |
per_node
r(
腳本
[
,
,
script_parameters
] [
,
external_artifacts]
)
深入瞭解
語法慣例
。
kargs
:script_parameters
自變數的值
,做為 R 字典。
result
:R 文稿所建立的 R 數據框架。 值會變成表格式數據,該數據會傳送至外掛程式之後的任何 Kusto 查詢運算元。
啟用外掛程式
該外掛程式預設為停用。
在叢集的 [組態] 索引標籤
中,啟用或停用 [Azure 入口網站] 中的外掛程式。 如需詳細資訊,請參閱
在 Azure 數據總管叢集中管理語言延伸模組 (預覽)
R 沙箱映像
R 沙箱映像是以
R 3.4.4 for Windows
為基礎,並包含 Anaconda R Essentials 套件組合
中的套件
。
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
.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)
若要避免 Kusto 字串分隔符與 R 字串分隔符之間的衝突:
在 Kusto 查詢中,針對 Kusto 字串常值使用單引號字元 ('
)。
針對 R 文稿中的 R 字串常值使用雙引號字元 ("
)。
使用外部數據運算符來取得您已儲存在外部位置的腳本內容,例如 Azure Blob 記憶體或公用 GitHub 存放庫。
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 外掛程式的套件
請依照下列步驟指示安裝外掛程式基底映像中未包含的套件。
建立 Blob 容器來裝載套件,最好與您的叢集位於相同位置。 例如, https://artifactswestus.blob.core.windows.net/r
假設您的叢集位於美國西部。
改變叢集的 註標原則 ,以允許存取該位置。
這項變更需要 AllDatabasesAdmin 許可權。
例如,若要啟用中 https://artifactswestus.blob.core.windows.net/r
Blob 的存取權,請執行下列命令:
.alter-merge cluster policy callout @'[ { "CalloutType": "sandbox_artifacts", "CalloutUriRegex": "artifactswestus\\.blob\\.core\\.windows\\.net/r/","CanCall": true } ]'
下列範例會假設 Windows 環境中的本機 R 計算機。
確認您使用適當的 R 版本 – 目前的 R 沙箱版本為 3.4.4:
> R.Version()["version.string"]
$version.string
[1] "R version 3.4.4 (2018-03-15)"
如有需要,您可以從這裏下載。
啟動 x64 RGui
建立新的空白資料夾,以填入您想要安裝的所有相關套件。 在此範例中 ,我們會安裝 brglm2 套件,因此建立 “C:\brglm2”。
將新建立的資料夾路徑新增至 lib 路徑:
> .libPaths("C://brglm2")
確認新資料夾現在是 .libPaths():
> .libPaths()
[1] "C:/brglm2" "C:/Program Files/R/R-3.4.4/library"
完成此設定之後,我們安裝的任何套件都應該新增至這個新資料夾。 讓我們安裝要求的套件及其相依性:
> install.packages("brglm2")
如果問題「您要從需要編譯的套件來源安裝嗎?」彈出視窗,請回答 「Y」。。
確認新資料夾已新增至 「C:\brglm2」:
| 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 ***'))