Rozšíření jazyka R ve službě SQL Server Machine Learning Services

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

Tento článek popisuje rozšíření R pro spouštění externích skriptů Pythonu se službami SQL Server Machine Learning Services a SQL Server 2016 R Services. Rozšíření přidá:

  • Spouštěcí prostředí jazyka R
  • Základní distribuce R se standardními knihovnami a nástroji
  • Knihovny Microsoft R:
    • RevoScaleR pro analýzy ve velkém měřítku
    • MicrosoftML pro algoritmy strojového učení Platí jenom pro SQL Server 2016, SQL Server 2017 a SQL Server 2019.
    • Další knihovny pro přístup k datům nebo kódu jazyka R na SQL Serveru

Komponenty jazyka R

SQL Server obsahuje opensourcové i proprietární balíčky. Základní knihovny R se instalují prostřednictvím distribuce opensourcového jazyka R od Microsoftu: Microsoft R Open (MRO). Aktuální uživatelé jazyka R by měli mít možnost portovat svůj kód R a spouštět ho jako externí proces na SQL Serveru s několika nebo žádnými úpravami. MRO se instaluje nezávisle na nástrojích SQL a provádí se mimo základní procesy modulu v rámci rámce rozšiřitelnosti. Během instalace musíte souhlasit s podmínkami opensourcové licence. Potom můžete spouštět standardní balíčky R bez dalších úprav stejně jako v jakékoli jiné opensourcové distribuci jazyka R.

Pro SQL Server 2016 (13.x), SQL Server 2017 (14.x) a SQL Server 2019 (15.x), SQL Server neupravuje základní spustitelné soubory R, ale musíte použít verzi jazyka R nainstalovanou instalačním programem, protože tato verze je ta, na které jsou vytvořené a otestované vlastní balíčky. Další informace o tom, jak se MRO liší od základní distribuce R, kterou můžete získat z CRAN, najdete v tématu Interoperabilita s jazykem R a produkty a funkcemi Microsoft R.

Základní distribuce balíčku R nainstalovaná instalačním programem se nachází ve složce přidružené k instanci. Pokud jste například nainstalovali službu R Services na výchozí instanci SQL Serveru, knihovny jazyka R jsou ve výchozím nastavení umístěny v této složce: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. Podobně nástroje R přidružené k výchozí instanci by se ve výchozím nastavení nacházely v této složce: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.

Balíčky R přidané Microsoftem pro paralelní a distribuované úlohy zahrnují následující knihovny.

Knihovna Description
RevoScaleR Podporuje objekty zdroje dat a zkoumání dat, manipulaci, transformaci a vizualizaci. Podporuje vytváření vzdálených výpočetních kontextů a také různé škálovatelné modely strojového učení, jako je rxLinMod. Rozhraní API jsou optimalizovaná pro analýzu datových sad, které jsou příliš velké, aby se vešly do paměti, a k provádění výpočtů distribuovaných přes několik jader nebo procesorů. Balíček RevoScaleR také podporuje formát souboru XDF pro rychlejší přesun a ukládání dat používaných k analýze. Formát XDF používá sloupcové úložiště, je přenosné a dá se použít k načtení a následné manipulaci s daty z různých zdrojů, včetně textu, SPSS nebo připojení ODBC.
MicrosoftML Obsahuje algoritmy strojového učení optimalizované pro rychlost a přesnost a také integrované transformace pro práci s textem a obrázky. Další informace naleznete v microsoftML na SQL Serveru. Platí jenom pro SQL Server 2016, SQL Server 2017 a SQL Server 2019.

Počínaje SQL Serverem 2022 (16.x) se moduly runtime pro R, Python a Java už s instalací SQL nenainstalují. Místo toho nainstalujte požadované vlastní moduly runtime a balíčky jazyka R nebo Python. Další informace naleznete v tématu Instalace služby SQL Server 2022 Machine Learning Services ve Windows nebo instalace služby SQL Server Machine Learning Services (Python a R) v Linuxu.

Použití jazyka R na SQL Serveru

R můžete skriptovat pomocí základních funkcí, ale pokud chcete využívat více zpracování, musíte do kódu R importovat moduly RevoScaleR a MicrosoftML a pak volat jeho funkce k vytvoření modelů, které se spouští paralelně.

Mezi podporované zdroje dat patří databáze ODBC, SQL Server a formát souborů XDF pro výměnu dat s jinými zdroji nebo s řešeními R. Vstupní data musí být tabulková. Všechny výsledky jazyka R musí být vráceny ve formě datového rámce.

Mezi podporované výpočetní kontexty patří místní nebo vzdálený výpočetní kontext SQL Serveru. Vzdálený výpočetní kontext odkazuje na spuštění kódu, které se spouští na jednom počítači, jako je pracovní stanice, ale pak přepne spuštění skriptu na vzdálený počítač. Přepnutí výpočetního kontextu vyžaduje, aby oba systémy měly stejnou knihovnu RevoScaleR.

Místní výpočetní kontext, jak můžete očekávat, zahrnuje spuštění kódu R na stejném serveru jako instance databázového stroje s kódem uvnitř T-SQL nebo vloženým do uložené procedury. Kód můžete spustit také z místního prostředí IDE jazyka R a skript spustit na počítači s SQL Serverem tak, že definujete vzdálený výpočetní kontext.

Architektura spouštění

Následující diagramy znázorňují interakci komponent SQL Serveru s modulem runtime R v jednotlivých podporovaných scénářích: spouštění skriptů v databázi a vzdálené spouštění z příkazového řádku jazyka R pomocí výpočetního kontextu SQL Serveru.

Skripty jazyka R spouštěné z sql Serveru v databázi

Kód R, který se spouští z "uvnitř" SQL Serveru, se provádí voláním uložené procedury. Každá aplikace, která může volat uloženou proceduru, tedy může zahájit spuštění kódu R. Následně SQL Server spravuje provádění kódu R, jak je shrnuto v následujícím diagramu.

rsql_indb780-01

  1. Požadavek na R runtime je označen parametrem @language='R' předaný uložené proceduře sp_execute_external_script. SQL Server odešle tento požadavek do služby launchpad. SQL v Linuxu používá službu launchpadd ke komunikaci se samostatným procesem launchpadu pro každého uživatele. Podrobnosti najdete v diagramu architektury rozšiřitelnosti .
  2. Služba launchpad spustí příslušný spouštěč; V tomto případě RLauncher.
  3. RLauncher spustí externí proces R.
  4. BxlServer spolupracuje s modulem runtime R za účelem spravování výměn dat s SQL Serverem a ukládání pracovních výsledků.
  5. Sql Satellite spravuje komunikaci o souvisejících úkolech a procesech s SQL Serverem.
  6. BxlServer používá funkci SQL Satellite ke komunikaci stavu a výsledků s SQL Serverem.
  7. SQL Server získá výsledky a zavře související úlohy a procesy.

Skripty R spouštěné ze vzdáleného klienta

Při připojování ze vzdáleného klienta pro datové vědy, který podporuje Microsoft R, můžete spouštět funkce R v kontextu SQL Serveru pomocí funkcí RevoScaleR. Jedná se o jiný pracovní postup než předchozí pracovní postup a je shrnutý v následujícím diagramu.

rsql_fromR2db-01

  1. V případě funkcí RevoScaleR volá modul runtime R odkazovací funkci, která pak volá BxlServer.
  2. BxlServer je poskytován s Microsoft R a běží v samostatném procesu od R runtime.
  3. BxlServer určuje cíl připojení a zahájí připojení pomocí rozhraní ODBC a předá přihlašovací údaje zadané jako součást připojovacího řetězce v objektu zdroje dat R.
  4. BxlServer otevře připojení k instanci SQL Serveru.
  5. U volání jazyka R je vyvolána služba launchpad, která spustí odpovídající spouštěč RLauncher. Následně se zpracování kódu R podobá procesu spouštění kódu R z T-SQL.
  6. RLauncher volá instanci modulu runtime R nainstalovaného na počítači s SQL Serverem.
  7. Výsledky se vrátí do BxlServeru.
  8. Služba SQL Satellite spravuje komunikaci s SQL Serverem a vyčištění souvisejících objektů úloh.
  9. SQL Server předává výsledky zpět klientovi.

Viz také