共用方式為


定義和使用計算內容 (SQL Server 和 RevoScaleR 教學課程)

適用於: SQL Server 2016 (13.x) 和更新版本

這是 RevoScaleR 教學課程系列的教學課程 4;此教學課程系列說明如何搭配 SQL Server 使用 RevoScaleR 函式 \(英文\)。

在上一個教學課程中,您已使用 RevoScaleR 函式來檢查資料物件。 本課程介紹 RxInSqlServer \(英文\) 函式,其可讓您定義遠端 SQL Server 的計算內容。 使用遠端計算內容,您可以將 R 執行從本機工作階段轉移到伺服器上的遠端工作階段。

  • 了解遠端 SQL Server 計算內容的元素
  • 啟用計算內容物件的追蹤

RevoScaleR 支援多個計算內容:Hadoop、HDFS 上的 Spark,以及資料庫中的 SQL Server。 針對 SQL Server,RxInSqlServer 函式是用於伺服器連接,以及在本機電腦與遠端執行內容之間傳遞物件。

建立及設定計算內容

建立 SQL Server 計算內容的 RxInSqlServer 函式會使用下列資訊:

  • SQL Server 執行個體的連接字串
  • 如何處理輸出的規格
  • 選擇性的共用資料目錄規格
  • 啟用追蹤或指定追蹤層級的選擇性引數

本節將逐步引導您完成每個部分。

  1. 指定要進執行計算的執行個體連接字串。 您可以重複使用您稍早建立的連接字串。

    使用 SQL 登入

    sqlConnString <- "Driver=SQL Server;Server=<SQL Server instance name>; Database=<database name>;Uid=<SQL user nme>;Pwd=<password>"
    

    使用 Windows 驗證

    sqlConnString <- "Driver=SQL Server;Server=instance_name;Database=RevoDeepDive;Trusted_Connection=True"
    
  2. 指定您要如何處理輸出。 下列指令碼會指示本機 R 工作階段在處理下一個作業之前,等候伺服器上的 R 工作結果。 它也會抑制遠端計算的輸出不會出現在本機工作階段中。

    sqlWait <- TRUE
    sqlConsoleOutput <- FALSE
    

    RxInSqlServerwait 引數支援下列選項:

    • TRUE: 工作將會設定為封鎖,而且在完成或失敗之前都不會傳回。

    • FALSE: 工作會設定為封鎖,而且會立即傳回,讓您繼續執行其他 R 程式碼。 不過,即使在非封鎖模式中,也必須在執行作業時保持 SQL Server 與用戶端的連線。

  3. 選擇性地指定本機 R 工作階段以及遠端 SQL Server 電腦和其帳戶共同使用的本機目錄位置。

    sqlShareDir <- paste("c:\\AllShare\\", Sys.getenv("USERNAME"), sep="")
    

    如果您想要手動建立要共用的特定目錄,您可以新增類似下列的行:

    dir.create(sqlShareDir, recursive = TRUE)
    
  4. 將引數傳遞給 RxInSqlServer 建構函式,以建立「計算內容物件」 。

    sqlCompute <- RxInSqlServer(  
         connectionString = sqlConnString,
         wait = sqlWait,
         consoleOutput = sqlConsoleOutput)
    

    RxInSqlServer 的語法與先前用來定義資料來源的 RxSqlServerData 函式的語法幾乎相同。 但是,有一些重要的差異。

    • 資料來源物件 (使用 RxSqlServerData函數所定義) 指定資料的儲存位置。

    • 相反地,計算內容 (使用 RxInSqlServer 函式所定義) 表示進行彙總和其他計算的位置。

    定義計算內容不會影響您可能會在工作站上執行的任何其他泛型 R 計算,而且不會變更資料的來源。 例如,您可以將本機文字檔定義為資料來源,但將計算內容變更為 SQL Server,並且執行 SQL Server 電腦上資料的所有讀取和摘要。

  5. 啟用遠端計算內容。

    rxSetComputeContext(sqlCompute)
    
  6. 傳回計算內容的相關資訊,包括其屬性。

    rxGetComputeContext()
    
  7. 指定 "local" 關鍵字來將計算內容重設回本機電腦 (下一個教學課程會示範使用遠端計算內容)。

    rxSetComputeContext("local")
    

提示

如需此函數支援之其他關鍵字的清單,請從 R 命令列輸入 help("rxSetComputeContext")

啟用追縱

有時候作業可在您的本機內容上運作,但在遠端計算內容中執行時則發生問題。 如果您想要分析問題或監視效能,則可以在計算內容中啟用追蹤,以支援執行階段疑難排解。

  1. 建立使用相同連接字串的新計算內容,但將 traceEnabledtraceLevel 引數新增至 RxInSqlServer 建構函式。

    sqlComputeTrace <- RxInSqlServer(
        connectionString = sqlConnString,
        #shareDir = sqlShareDir,
        wait = sqlWait,
        consoleOutput = sqlConsoleOutput,
        traceEnabled = TRUE,
        traceLevel = 7)
    

    在此範例中,traceLevel 屬性設定為 7,表示「顯示所有追蹤資訊」。

  2. 使用 rxSetComputeCoNtext 函式,依名稱指定啟用追蹤的計算內容。

    rxSetComputeContext(sqlComputeTrace)
    

後續步驟

了解如何切換計算內容,以在伺服器或本機上執行 R 程式碼。