Megosztás a következőn keresztül:


Python nyelvi bővítmény az SQL Server Machine Learning Servicesben

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:

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.

script-in-db-python

  1. 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 .
  2. A launchpad szolgáltatás elindítja a megfelelő indítót; ebben az esetben a PythonLauncher.
  3. A PythonLauncher elindítja a külső Python35-folyamatot.
  4. A BxlServer koordinálja a Python-futtatókörnyezetet az adatcserék kezeléséhez és a munkaeredmények tárolásához.
  5. Az SQL Satellite az SQL Serverrel kapcsolatos feladatokkal és folyamatokkal kapcsolatos kommunikációt kezeli.
  6. A BxlServer az SQL Satellite használatával közli az állapotot és az eredményeket az SQL Serverrel.
  7. 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.

remote-sqlcc-from-python

  1. 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.
  2. A BxlServer a Machine Learning Services (In-Database) része, és a Python-futtatókörnyezettől eltérő folyamaton fut.
  3. 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.
  4. A BxlServer kapcsolatot nyit az SQL Server-példányhoz.
  5. 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.
  6. A PythonLauncher meghívja az SQL Server-számítógépre telepített Python-példányt.
  7. A rendszer visszaadja az eredményeket a BxlServernek.
  8. Az SQL Satellite kezeli az SQL Serverrel folytatott kommunikációt és a kapcsolódó feladatobjektumok törlését.
  9. Az SQL Server visszaadja az eredményeket az ügyfélnek.

Következő lépések