Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies
In dit artikel wordt de R-extensie beschreven voor het uitvoeren van externe Python-scripts met SQL Server Machine Learning Services en SQL Server 2016 R Services. De extensie voegt het volgende toe:
- Een R-uitvoeringsomgeving
- Basis R-distributie met standaardbibliotheken en hulpprogramma's
- Microsoft R-bibliotheken:
- RevoScaleR voor analyse op schaal
- MicrosoftML voor machine learning-algoritmen. Alleen van toepassing op SQL Server 2016, SQL Server 2017 en SQL Server 2019.
- Andere bibliotheken voor toegang tot gegevens of R-code in SQL Server
R-onderdelen
SQL Server bevat zowel opensource- als bedrijfseigen pakketten. De basis-R-bibliotheken worden geïnstalleerd via de distributie van opensource R: Microsoft R Open (MRO). Huidige gebruikers van R moeten hun R-code kunnen overzetten en uitvoeren als een extern proces op SQL Server met weinig of geen wijzigingen. MRO wordt onafhankelijk van SQL-hulpprogramma's geïnstalleerd en wordt uitgevoerd buiten kernengineprocessen, in het uitbreidbaarheidsframework. Tijdens de installatie moet u akkoord gaan met de voorwaarden van de opensource-licentie. Daarna kunt u standaard R-pakketten uitvoeren zonder verdere aanpassingen, net zoals in elke andere opensource-distributie van R.
Voor SQL Server 2016 (13.x), SQL Server 2017 (14.x) en SQL Server 2019 (15.x) wijzigt SQL Server de uitvoerbare basis-R-bestanden niet, maar moet u de versie van R gebruiken die is geïnstalleerd door Setup, omdat die versie het is waarop de eigen pakketten zijn gebouwd en getest. Zie Interoperabiliteit met R-taal en Microsoft R-producten en -functies voor meer informatie over hoe MRO verschilt van een basisdistributie van R die u mogelijk krijgt van CRAN.
De R-basispakketdistributie die door Setup is geïnstalleerd, vindt u in de map die is gekoppeld aan het exemplaar. Als u bijvoorbeeld R Services op een standaardexemplaren van SQL Server hebt geïnstalleerd, bevinden de R-bibliotheken zich standaard in deze map: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. Op dezelfde manier bevinden de R-hulpprogramma's die zijn gekoppeld aan het standaardexemplaar zich standaard in deze map: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.
R-pakketten die door Microsoft zijn toegevoegd voor parallelle en gedistribueerde workloads, bevatten de volgende bibliotheken.
| Bibliotheek | Description |
|---|---|
| RevoScaleR | Ondersteunt gegevensbronobjecten en gegevensverkenning, manipulatie, transformatie en visualisatie. Het ondersteunt het maken van externe rekencontexten, evenals een verschillende schaalbare machine learning-modellen, zoals rxLinMod. De API's zijn geoptimaliseerd voor het analyseren van gegevenssets die te groot zijn om in het geheugen te passen en berekeningen uit te voeren die zijn verdeeld over verschillende kernen of processors. Het RevoScaleR-pakket ondersteunt ook de XDF-bestandsindeling voor snellere verplaatsing en opslag van gegevens die worden gebruikt voor analyse. De XDF-indeling maakt gebruik van kolomopslag, is draagbaar en kan worden gebruikt om gegevens uit verschillende bronnen te laden en vervolgens te bewerken, waaronder tekst, SPSS of een ODBC-verbinding. |
| MicrosoftML | Bevat machine learning-algoritmen die zijn geoptimaliseerd voor snelheid en nauwkeurigheid, evenals inlinetransformaties voor het werken met tekst en afbeeldingen. Zie MicrosoftML in SQL Server voor meer informatie. Alleen van toepassing op SQL Server 2016, SQL Server 2017 en SQL Server 2019. |
Vanaf SQL Server 2022 (16.x) worden runtimes voor R, Python en Java niet meer geïnstalleerd met SQL Setup. Installeer in plaats daarvan uw gewenste R- en/of Python-aangepaste runtime(s) en pakketten. Zie SQL Server 2022 Machine Learning Services installeren in Windows of SQL Server Machine Learning Services (Python en R) installeren op Linux voor meer informatie.
R gebruiken in SQL Server
U kunt R uitvoeren met behulp van basisfuncties, maar als u wilt profiteren van meerdere verwerkingen, moet u de RevoScaleR - en MicrosoftML-modules importeren in uw R-code en vervolgens de bijbehorende functies aanroepen om modellen te maken die parallel worden uitgevoerd.
Ondersteunde gegevensbronnen zijn onder andere ODBC-databases, SQL Server en XDF-bestandsindeling om gegevens uit te wisselen met andere bronnen of met R-oplossingen. Invoergegevens moeten in tabelvorm zijn. Alle R-resultaten moeten worden geretourneerd in de vorm van een gegevensframe.
Ondersteunde rekencontexten zijn lokale of externe SQL Server-rekencontext. Een externe rekencontext verwijst naar de uitvoering van code die op één computer, zoals een werkstation, wordt gestart, maar vervolgens wordt de uitvoering van scripts overgeschakeld naar een externe computer. Als u de rekencontext overschakelt, moeten beide systemen dezelfde RevoScaleR-bibliotheek hebben.
Lokale rekencontext omvat, zoals u zou verwachten, de uitvoering van R-code op dezelfde server als het database-engineexemplaren, met code in T-SQL of ingesloten in een opgeslagen procedure. U kunt de code ook uitvoeren vanuit een lokale R IDE en het script uitvoeren op de SQL Server-computer door een externe rekencontext te definiëren.
Uitvoeringsarchitectuur
In de volgende diagrammen ziet u de interactie van SQL Server-onderdelen met de R-runtime in elk van de ondersteunde scenario's: het uitvoeren van scripts in de database en externe uitvoering vanaf een R-opdrachtregel, met behulp van een SQL Server-rekencontext.
R-scripts uitgevoerd vanuit SQL Server in database
R-code die wordt uitgevoerd vanuit 'binnen' SQL Server, wordt uitgevoerd door een opgeslagen procedure aan te roepen. Elke toepassing die een opgeslagen procedureoproep kan maken, kan dus de uitvoering van R-code initiëren. Daarna beheert SQL Server de uitvoering van R-code, zoals samengevat in het volgende diagram.
- Een aanvraag voor de R-runtime wordt aangegeven door de parameter @language='R' doorgegeven aan de opgeslagen procedure , sp_execute_external_script. SQL Server verzendt deze aanvraag naar de launchpad-service. In Linux gebruikt SQL een launchpadd-service om te communiceren met een afzonderlijk launchpadproces voor elke gebruiker. Zie het diagram van de uitbreidbaarheidsarchitectuur voor meer informatie.
- De launchpad-service start het juiste startprogramma; in dit geval RLauncher.
- RLauncher start het externe R-proces.
- BxlServer coördineert met de R-runtime om uitwisselingen van gegevens met SQL Server en opslag van werkresultaten te beheren.
- SQL Satellite beheert communicatie over gerelateerde taken en processen met SQL Server.
- BxlServer maakt gebruik van SQL Satellite om de status en resultaten te communiceren met SQL Server.
- SQL Server haalt resultaten op en sluit gerelateerde taken en processen.
R-scripts uitgevoerd vanaf een externe client
Wanneer u verbinding maakt vanuit een externe data science-client die Microsoft R ondersteunt, kunt u R-functies uitvoeren in de context van SQL Server met behulp van de RevoScaleR-functies. Dit is een andere werkstroom dan de vorige en wordt samengevat in het volgende diagram.
- Voor RevoScaleR-functies roept de R-runtime een koppelingsfunctie aan die op zijn beurt BxlServer aanroept.
- BxlServer wordt geleverd met Microsoft R en wordt uitgevoerd in een afzonderlijk proces van de R-runtime.
- BxlServer bepaalt het verbindingsdoel en initieert een verbinding met behulp van ODBC, waarbij referenties worden doorgegeven als onderdeel van de verbindingsreeks in het R-gegevensbronobject.
- BxlServer opent een verbinding met het SQL Server-exemplaar.
- Voor een R-aanroep wordt de launchpad-service aangeroepen, die op zijn beurt het juiste startprogramma, RLauncher, start. Daarna is de verwerking van R-code vergelijkbaar met het proces voor het uitvoeren van R-code vanuit T-SQL.
- RLauncher roept het exemplaar van de R-runtime aan die is geïnstalleerd op de SQL Server-computer.
- Resultaten worden geretourneerd naar BxlServer.
- SQL Satellite beheert de communicatie met SQL Server en het opschonen van gerelateerde taakobjecten.
- SQL Server geeft resultaten terug aan de client.