Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók
Ez a cikk a Külső Python-szkriptek SQL Server Machine Learning Services szolgáltatással való futtatásához használható Python-bővítményt ismerteti. A bővítmény a következőt adja hozzá:
- Python-végrehajtási környezet
- Anaconda-disztribúció a Python 3.5 futtatókörnyezettel és értelmezővel
- Standard kódtárak és eszközök
- Microsoft Python-csomagok:
- revoscalepy a nagy léptékű elemzéshez.
- microsoftml gépi tanulási algoritmusokhoz.
A Python 3.5 futtatókörnyezet és az értelmező telepítése szinte teljes kompatibilitást biztosít a standard Python-megoldásokkal. A Python az SQL Servertől eltérő folyamaton fut, hogy az adatbázis-műveletek ne sérüljenek.
Python-összetevők
Az SQL Server nyílt forráskódú és védett csomagokat is tartalmaz. A Setup által telepített Python futtatókörnyezet az Anaconda 4.2 és Python 3.5. A Python-futtatókörnyezet az SQL-eszközöktől függetlenül van telepítve, és az alapvető motorfolyamatokon kívül, a bővíthetőségi keretrendszerben fut. A Machine Learning Services Python telepítésének részeként hozzá kell járulnia a GNU közösségi licenc feltételeihez való hozzájáruláshoz.
Az SQL Server nem módosítja a Python-végrehajtható fájlokat, de a Telepítő által telepített Python-verziót kell használnia, mert az a verzió, amelyen a védett csomagok vannak felépítve és tesztelve. Az Anaconda-disztribúció által támogatott csomagok listáját a Continuum elemzési webhelyén találja: Anaconda csomaglista.
Az adott adatbázismotor-példányhoz társított Anaconda-disztribúció a példányhoz társított mappában található. Ha például az SQL Server 2017 adatbázismotort a Machine Learning Services és a Python telepítésével telepítette az alapértelmezett példányra, nézze meg a C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES alatt.
A Microsoft által a párhuzamos és elosztott számítási feladatokhoz hozzáadott Python-csomagok a következő kódtárakat tartalmazzák.
| Könyvtár | Description |
|---|---|
| revoscalepy | Támogatja az adatforrás-objektumokat és az adatfeltárást, a manipulációt, az átalakítást és a vizualizációt. Támogatja a távoli számítási környezetek létrehozását, valamint számos skálázható gépi tanulási modellt, például az rxLinModot. További információt az SQL Serverrel rendelkező revoscalepy modulban talál. |
| microsoftml | Olyan gépi tanulási algoritmusokat tartalmaz, amelyek a sebességre és a pontosságra vannak optimalizálva, valamint a szöveggel és a képekkel való munkához szükséges, soron belüli átalakításokat. További információ: microsoftml modul az SQL Serverrel. |
A Microsoftml és a revoscalepy szorosan össze vannak állítva; A microsoftmlben használt adatforrások revoscalepy-objektumokként vannak definiálva. A revoscalepy microsoftml-re történő átvitelének számítási környezet korlátozásai. Nevezetesen minden funkció elérhető a helyi műveletekhez, de távoli számítási környezetre való váltáshoz RxInSqlServer szükséges.
A Python használata az SQL Serverben
Importálja a revoscalepy modult a Python-kódba, majd meghívja a függvényeket a modulból, mint bármely más Python-függvény.
A támogatott adatforrások közé tartoznak az ODBC-adatbázisok, az SQL Server és az XDF fájlformátumok, amellyel adatokat cserélhet más forrásokkal vagy R-megoldásokkal. A Python bemeneti adatainak táblázatosnak kell lenniük. Minden Python-eredményt pandas-adatkeret formájában kell visszaadni.
A támogatott számítási környezetek közé tartoznak a helyi vagy távoli SQL Server számítási környezetek. A távoli számítási környezet olyan kódvégrehajtást jelent, amely egy számítógépen, például egy munkaállomáson indul el, majd a szkript végrehajtását távoli számítógépre váltja. A számítási környezet váltásához mindkét rendszernek ugyanazzal a revoscalepy-kódtárzal kell rendelkeznie.
A helyi számítási környezet a vártnak megfelelően magában foglalja a Python-kód végrehajtását az adatbázismotor-példánysal megegyező kiszolgálón, A T-SQL-ben lévő kóddal vagy egy tárolt eljárásba ágyazva. A kódot egy helyi Python IDE-ből is futtathatja, és végrehajtathatja a szkriptet az SQL Server-számítógépen egy távoli számítási környezet definiálásával.
Végrehajtási architektúra
Az alábbi ábrák az SQL Server-összetevők és a Python-futtatókörnyezet közötti interakciót ábrázolják az egyes támogatott forgatókönyvekben: szkriptek adatbázison belüli futtatása és távoli végrehajtás Egy Python-terminálról SQL Server számítási környezet használatával.
Az adatbázisban végrehajtott Python-szkriptek
Amikor a Pythont "belső" SQL Serveren futtatja, a Python-szkriptet egy speciális tárolt eljárásba kell beágyaznia, sp_execute_external_script.
Miután a szkript beágyazódott a tárolt eljárásba, minden olyan alkalmazás, amely képes tárolt eljáráshívást kezdeményezni, kezdeményezheti a Python-kód végrehajtását. Ezt követően az SQL Server kezeli a kódvégrehajtást az alábbi ábrán összefoglalt módon.
- A Python-futtatókörnyezetre vonatkozó kérést a tárolt eljárásnak átadott paraméter
@language='Python'jelzi. Az SQL Server elküldi ezt a kérést a launchpad szolgáltatásnak. Linuxon az SQL egy launchpadd szolgáltatással kommunikál minden felhasználó számára egy külön launchpad-folyamattal. Részletekért tekintse meg a Bővíthetőségi architektúra diagramját . - A launchpad szolgáltatás elindítja a megfelelő indítót; ebben az esetben a PythonLauncher.
- A PythonLauncher elindítja a külső Python35-folyamatot.
- A BxlServer koordinálja a Python-futtatókörnyezetet az adatcserék kezeléséhez és a munkaeredmények tárolásához.
- Az SQL Satellite az SQL Serverrel kapcsolatos feladatokkal és folyamatokkal kapcsolatos kommunikációt kezeli.
- A BxlServer az SQL Satellite használatával közli az állapotot és az eredményeket az SQL Serverrel.
- Az SQL Server lekéri az eredményeket, és bezárja a kapcsolódó feladatokat és folyamatokat.
Távoli ügyfélből végrehajtott Python-szkriptek
A Python-szkripteket távoli számítógépről( például laptopról) futtathatja, és végrehajtathatja őket az SQL Server-számítógép kontextusában, ha ezek a feltételek teljesülnek:
- A szkripteket megfelelően kell megtervezni
- A távoli számítógép telepítette a Machine Learning Services által használt bővíthetőségi kódtárakat. A revoscalepy-csomag távoli számítási környezetek használatához szükséges.
Az alábbi ábra a távoli számítógépről küldött szkriptek teljes munkafolyamatát foglalja össze.
- A revoscalepy-ban támogatott függvények esetében a Python-futtatókörnyezet egy összekapcsoló függvényt hív meg, amely viszont meghívja a BxlServert.
- A BxlServer a Machine Learning Services (In-Database) része, és a Python-futtatókörnyezettől eltérő folyamaton fut.
- A BxlServer meghatározza a kapcsolati célt, és odBC használatával kezdeményezi a kapcsolatot, átadva a Python-szkript kapcsolati sztringjének részeként megadott hitelesítő adatokat.
- A BxlServer kapcsolatot nyit az SQL Server-példányhoz.
- Ha külső szkript futtatókörnyezetet hív meg, a rendszer meghívja a launchpad szolgáltatást, amely viszont elindítja a megfelelő indítót: ebben az esetben PythonLauncher.dll. Ezt követően a Python-kód feldolgozása egy olyan munkafolyamatban történik, amely hasonló ahhoz, mint amikor a Python-kódot egy tárolt eljárásból hívják meg a T-SQL-ben.
- A PythonLauncher meghívja az SQL Server-számítógépre telepített Python-példányt.
- A rendszer visszaadja az eredményeket a BxlServernek.
- Az SQL Satellite kezeli az SQL Serverrel folytatott kommunikációt és a kapcsolódó feladatobjektumok törlését.
- Az SQL Server visszaadja az eredményeket az ügyfélnek.