Definujte a používejte výpočetní kontexty (tutoriál SQL Server a RevoScaleR)

platí pro: SQL Server 2016 (13.x) a novější verze

Toto je čtvrtý tutoriál ze série RevoScaleR o tom, jak používat funkce RevoScaleR se SQL Server.

V předchozím tutoriálu jste použil funkce RevoScaleR k inspekci datových objektů. Tento tutoriál představuje funkci RxInSqlServer, která vám umožní definovat výpočetní kontext pro vzdálený SQL Server. S kontextem vzdáleného výpočtu můžete přesunout R z lokální relace na vzdálenou relaci na serveru.

  • Naučte se prvky vzdáleného výpočetního kontextu SQL Server
  • Povolte trasování na objektu výpočetního kontextu

RevoScaleR podporuje více výpočetních kontextů: Hadoop, Spark na HDFS a SQL Server v databázi. Pro SQL Server se funkce RxInSqlServer používá pro připojení k serveru a předávání objektů mezi lokálním počítačem a vzdáleným spouštěcím kontextem.

Vytvořte a nastavte výpočetní kontext

Funkce RxInSqlServer, která vytváří výpočetní kontext SQL Server, využívá následující informace:

  • Spojovací řetězec pro instanci SQL Server
  • Specifikace, jak by měl být výstup zpracováván
  • Volitelná specifikace sdíleného datového adresáře
  • Volitelné argumenty umožňují trasování nebo specifikují úroveň stopování

Tato část vás provede každou částí.

  1. Zadejte připojovací řetězec pro instanci, kde se výpočty provádějí. Můžete znovu použít připojovací řetězec, který jste vytvořili dříve.

    Použití SQL přihlášení

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

    Použití ověřování systému Windows

    sqlConnString <- "Driver=SQL Server;Server=instance_name;Database=RevoDeepDive;Trusted_Connection=True"
    
  2. Určete, jak chcete, aby se výstup zpracovával. Následující skript nařizuje lokální R relaci, aby počkala na výsledky R úlohy na serveru před zpracováním další operace. Také zabraňuje tomu, aby se výstup ze vzdálených výpočtů zobrazoval v místní relaci.

    sqlWait <- TRUE
    sqlConsoleOutput <- FALSE
    

    Argument o čekání na RxInSqlServer podporuje tyto možnosti:

    • PRAVDA. Úloha je nakonfigurována jako blokující a nevrátí se, dokud není dokončena nebo neúspěšná.

    • NEPRAVDA. Úlohy jsou nastaveny jako neblokující a okamžitě se vracejí, což vám umožní pokračovat v provozování jiného R kódu. Nicméně i v režimu bez blokování musí být klientské spojení se SQL Server udržováno během běhu úlohy.

  3. Volitelně specifikujte umístění lokálního adresáře pro sdílené použití lokální relací R a vzdáleným počítačem SQL Server a jeho účty.

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

    Pokud chcete ručně vytvořit konkrétní adresář pro sdílení, můžete přidat řadu jako následuje:

    dir.create(sqlShareDir, recursive = TRUE)
    
  4. Předání argumentů konstruktoru RxInSqlServer pro vytvoření objektu výpočetního kontextu.

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

    Syntaxe pro RxInSqlServer vypadá téměř identicky s funkcí RxSqlServerData , kterou jste dříve použili k definování zdroje dat. Existují však některé důležité rozdíly.

    • Objekt zdrojového data, definovaný pomocí funkce RxSqlServerData, specifikuje, kde jsou data uložena.

    • Naopak výpočetní kontext, definovaný pomocí funkce RxInSqlServer , ukazuje, kde mají proběhnout agregace a další výpočty.

    Definování výpočetního kontextu neovlivňuje žádné jiné obecné výpočty R, které můžete provádět na své pracovní stanici, a nemění zdroj dat. Například můžete definovat lokální textový soubor jako zdroj dat, ale změnit výpočetní kontext na SQL Server a veškeré čtení a shrnutí dělat na počítači SQL Server.

  5. Aktivujte vzdálený výpočetní kontext.

    rxSetComputeContext(sqlCompute)
    
  6. Vraťte informace o výpočetním kontextu, včetně jeho vlastností.

    rxGetComputeContext()
    
  7. Resetujte výpočetní kontext zpět na lokální počítač zadáním "lokálního" klíčového slova (další tutoriál ukazuje použití vzdáleného výpočetního kontextu).

    rxSetComputeContext("local")
    

Tip

Seznam dalších klíčových slov podporovaných touto funkcí zobrazíte zadáním help("rxSetComputeContext") na příkazovém řádku jazyka R.

Povolit trasování

Někdy operace fungují ve vašem lokálním kontextu, ale při vzdáleném výpočetním kontextu mají problémy. Pokud chcete analyzovat problémy nebo monitorovat výkon, můžete v kontextu výpočetní techniky povolit trasování, aby se podpořilo řešení problémů za běhu.

  1. Vytvořte nový výpočetní kontext, který používá stejný připojovací řetězec, ale přidejte argumenty traceEnabled a traceLevel do konstruktoru RxInSqlServer.

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

    V tomto příkladu je vlastnost traceLevel nastavena na 7, což znamená "zobrazit všechny informace o trasování".

  2. Použijte funkci rxSetComputeContext k určení kontextu výpočtu s podporou trasování podle jména.

    rxSetComputeContext(sqlComputeTrace)
    

Další krok

Naučte se, jak přepínat výpočetní kontexty pro spuštění R kódu na serveru nebo lokálně.