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 2017 (14.x) en latere versies
In dit artikel wordt de Python-extensie beschreven voor het uitvoeren van externe Python-scripts met SQL Server Machine Learning Services. De extensie voegt het volgende toe:
- Een Python-uitvoeringsomgeving
- Anaconda-distributie met de Python 3.5-runtime en -interpreter
- Standaardbibliotheken en hulpprogramma's
- Microsoft Python-pakketten:
- revoscalepy voor analyse op schaal.
- microsoftml voor machine learning-algoritmen.
Installatie van de Python 3.5-runtime en -interpreter zorgt voor bijna volledige compatibiliteit met standaard Python-oplossingen. Python wordt uitgevoerd in een afzonderlijk proces van SQL Server om te garanderen dat er geen inbreuk wordt gemaakt op databasebewerkingen.
Python-onderdelen
SQL Server bevat zowel opensource- als bedrijfseigen pakketten. De Python-runtime die door Setup is geïnstalleerd, is Anaconda 4.2 met Python 3.5. De Python-runtime wordt onafhankelijk van SQL-hulpprogramma's geïnstalleerd en wordt uitgevoerd buiten kernengineprocessen, in het uitbreidbaarheidsframework. Als onderdeel van de installatie van Machine Learning Services met Python moet u akkoord gaan met de voorwaarden van de GNU Public License.
SQL Server wijzigt de uitvoerbare Python-bestanden niet, maar u moet de versie van Python gebruiken die is geïnstalleerd door Setup, omdat deze versie het versie is waarop de eigen pakketten zijn gebouwd en getest. Zie de Continuum Analytics-site: Anaconda-pakketlijst voor een lijst met pakketten die worden ondersteund door de Anaconda-distributie.
De Anaconda-distributie die gekoppeld is aan een specifieke database-engine-instantie, bevindt zich in de map die bij de instantie hoort. Als u bijvoorbeeld SQL Server 2017-database-engine hebt geïnstalleerd met Machine Learning Services en Python op het standaardexemplaar, kijkt u onder C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES.
Python-pakketten die door Microsoft zijn toegevoegd voor parallelle en gedistribueerde workloads, bevatten de volgende bibliotheken.
| Bibliotheek | Description |
|---|---|
| revoscalepy | Ondersteunt gegevensbronobjecten en gegevensverkenning, manipulatie, transformatie en visualisatie. Het ondersteunt het maken van externe rekencontexten, evenals een verschillende schaalbare machine learning-modellen, zoals rxLinMod. Zie de revoscalepy-module met SQL Server voor meer informatie. |
| microsoftml | Bevat machine learning-algoritmen die zijn geoptimaliseerd voor snelheid en nauwkeurigheid, evenals inlinetransformaties voor het werken met tekst en afbeeldingen. Zie de microsoftml-module met SQL Server voor meer informatie. |
Microsoftml en revoscalepy zijn nauw gekoppeld; gegevensbronnen die in Microsoftml worden gebruikt, worden gedefinieerd als revoscalepy-objecten. Beperkingen voor compute-context in revoscalepy-overdracht naar microsoftml. Alle functionaliteit is namelijk beschikbaar voor lokale bewerkingen, maar voor het overschakelen naar een externe compute-context is RxInSqlServer vereist.
Python gebruiken in SQL Server
U importeert de revoscalepy-module in uw Python-code en roept vervolgens functies aan vanuit de module, zoals andere Python-functies.
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 voor Python moeten tabellair zijn. Alle Python-resultaten moeten worden geretourneerd in de vorm van een pandas-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 revoscalepy-bibliotheek hebben.
Lokale rekencontext omvat, zoals u zou verwachten, de uitvoering van Python-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 Python 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 Python-runtime in elk van de ondersteunde scenario's: het uitvoeren van scripts in de database en de externe uitvoering vanuit een Python-terminal, met behulp van een SQL Server-rekencontext.
Python-scripts uitgevoerd in database
Wanneer u Python 'binnen' SQL Server uitvoert, moet u het Python-script inkapselen in een speciale opgeslagen procedure sp_execute_external_script.
Nadat het script is ingesloten in de opgeslagen procedure, kan elke toepassing die een opgeslagen procedureaanroep kan maken, de uitvoering van de Python-code initiëren. Daarna beheert SQL Server de uitvoering van code, zoals samengevat in het volgende diagram.
- Een aanvraag voor de Python-runtime wordt aangegeven door de parameter
@language='Python'die wordt doorgegeven aan de opgeslagen procedure. 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 PythonLauncher.
- PythonLauncher start het externe Python35-proces.
- BxlServer coördineert met de Python-runtime voor het beheren van uitwisselingen van gegevens en het opslaan van werkresultaten.
- 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.
Python-scripts uitgevoerd vanaf een externe client
U kunt Python-scripts uitvoeren vanaf een externe computer, zoals een laptop, en deze laten uitvoeren in de context van de SQL Server-computer, als aan deze voorwaarden wordt voldaan:
- U ontwerpt de scripts op de juiste manier
- De externe computer heeft de uitbreidbaarheidsbibliotheken geïnstalleerd die door Machine Learning Services worden gebruikt. Het revoscalepy-pakket is vereist voor het gebruik van externe rekencontexten.
In het volgende diagram ziet u een overzicht van de algehele werkstroom wanneer scripts vanaf een externe computer worden verzonden.
- Voor functies die worden ondersteund in revoscalepy, roept de Python-runtime een koppelingsfunctie aan, die op zijn beurt BxlServer aanroept.
- BxlServer is opgenomen in Machine Learning Services (In-Database) en wordt uitgevoerd in een afzonderlijk proces van de Python-runtime.
- BxlServer bepaalt het verbindingsdoel en initieert een verbinding met behulp van ODBC, waarbij referenties worden doorgegeven als onderdeel van de verbindingsreeks in het Python-script.
- BxlServer opent een verbinding met het SQL Server-exemplaar.
- Wanneer een externe scriptruntime wordt aangeroepen, wordt de launchpad-service aangeroepen, die op zijn beurt het juiste startprogramma start: in dit geval PythonLauncher.dll. Daarna wordt de verwerking van Python-code verwerkt in een werkstroom die vergelijkbaar is met die wanneer Python-code wordt aangeroepen vanuit een opgeslagen procedure in T-SQL.
- PythonLauncher roept het exemplaar van Python aan dat 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.