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
A Microsoft revoscalepy Python-kódtára adatelemzési algoritmusokat biztosít az adatfeltáráshoz, a vizualizációhoz, az átalakításokhoz és az elemzéshez. Ez a kódtár stratégiai jelentőséggel bír az SQL Server Python-integrációs forgatókönyveiben. Többmagos kiszolgálón a revoscalepy függvények párhuzamosan is futtathatók. Központi kiszolgálóval és ügyfél-munkaállomásokkal rendelkező elosztott architektúrában (különálló fizikai számítógépeken, amelyek mindegyike ugyanazzal a revoscalepy-kódtárral rendelkezik) helyileg indítható Python-kódot írhat, majd a végrehajtást egy távoli SQL Server-példányra osztja át, ahol az adatok találhatók.
A revoscalepy a következő Microsoft-termékekben és -disztribúciókban található:
- SQL Server Machine Learning Services (adatbázison belül)
- Ügyféloldali Python-kódtárak (fejlesztői munkaállomásokhoz)
Ez a gyakorlat bemutatja, hogyan hozhat létre lineáris regressziós modellt rx_lin_mod alapján, amely a számítási környezetet bemenetként elfogadó revoscalepy egyik algoritmusa. A gyakorlatban futtatandó kód helyiről távoli számítási környezetbe helyezi át a kódvégrehajtást, amelyet a távoli számítási környezetet engedélyező revoscalepy-függvények engedélyeznek.
Az oktatóanyag elvégzésével megtanulhatja, hogyan:
- Lineáris modell létrehozása revoscalepy használatával
- Műveletek áthelyezése helyiről távoli számítási környezetbe
Előfeltételek
A gyakorlatban használt mintaadatok a flightdata-adatbázis .
A cikkben szereplő mintakód futtatásához IDE-ra van szükség, és az IDE-nek a Python végrehajtható fájljához kell kapcsolódnia.
A számítási környezet váltásának gyakorlásához helyi munkaállomásra és SQL Server-adatbázismotor-példányra van szükség, amelyen engedélyezve van a Machine Learning Services és a Python.
Jótanács
Ha nincs két számítógépe, a megfelelő alkalmazások telepítésével szimulálhat távoli számítási környezetet egy fizikai számítógépen. Először is az SQL Server Machine Learning Services telepítése "távoli" példányként működik. Másodszor, a Python-ügyfélkódtárak telepítése ügyfélként működik. Ugyanazon a gépen két példánya lesz ugyanabból a Python-disztribúcióból és a Microsoft Python-kódtárakból. A gyakorlat sikeres elvégzéséhez nyomon kell követnek a fájl elérési útvonalakat és hogy a Python.exe melyik példányát használja.
Távoli számítási környezetek és revoscalepy
Ez a minta bemutatja a Python-modell távoli számítási környezetben való létrehozásának folyamatát, amely lehetővé teszi, hogy egy ügyfélről dolgozzon, de válasszon egy távoli környezetet, például az SQL Servert vagy a Sparkot, ahol a műveleteket ténylegesen végrehajtják. A távoli számítási környezet célja, hogy a számítást oda vigye, ahol az adatok találhatók.
A Python-kód SQL Serveren való végrehajtásához a revoscalepy csomag szükséges. Ez egy speciális Python-csomag, amelyet a Microsoft biztosít, hasonlóan az R-nyelv RevoScaleR csomaghoz. A revoscalepy csomag támogatja a számítási környezetek létrehozását, és biztosítja az adatok és modellek helyi munkaállomás és távoli kiszolgáló közötti továbbításához szükséges infrastruktúrát. Az adatbázison belüli kódvégrehajtást támogató revoscalepy függvény az RxInSqlServer.
Ebben a leckében SQL Server adataival betanít egy lineáris modellt a rx_lin_mod alapján, amely egy revoscalepy függvény, amely támogatja a regressziót nagyon nagy adathalmazokon.
Ez a lecke azt is bemutatja, hogyan állíthatja be és használhatja az SQL Server számítási környezetét a Pythonban.
A mintakód futtatása
Miután előkészítette az adatbázist, és egy táblában tárolta a betanításhoz szükséges adatokat, nyisson meg egy Python fejlesztői környezetet, és futtassa a kódmintát.
A kód a következő lépéseket hajtja végre:
- Importálja a szükséges kódtárakat és függvényeket.
- Kapcsolatot hoz létre az SQL Serverrel. Adatforrás-objektumokat hoz létre az adatok kezeléséhez.
- Átalakításokkal módosítja az adatokat, hogy a logisztikai regressziós algoritmus használhassa.
- Meghívja
rx_lin_modés meghatározza a modellnek megfelelő képletet. - Előrejelzéseket hoz létre az eredeti adatok alapján.
- Az előrejelzett értékek alapján létrehoz egy összegzést.
Minden műveletet az SQL Server egy példányával hajtunk végre számítási környezetként.
Megjegyzés:
A parancssorból futó minta bemutatásához tekintse meg ezt a videót: SQL Server 2017 Advanced Analytics és Python
példakód
from revoscalepy import RxComputeContext, RxInSqlServer, RxSqlServerData
from revoscalepy import rx_lin_mod, rx_predict, rx_summary
from revoscalepy import RxOptions, rx_import
import os
def test_linmod_sql():
sql_server = os.getenv('PYTEST_SQL_SERVER', '.')
sql_connection_string = 'Driver=SQL Server;Server=' + sqlServer + ';Database=sqlpy;Trusted_Connection=True;'
print("connectionString={0!s}".format(sql_connection_string))
data_source = RxSqlServerData(
sql_query = "select top 10 * from airlinedemosmall",
connection_string = sql_connection_string,
column_info = {
"ArrDelay" : { "type" : "integer" },
"DayOfWeek" : {
"type" : "factor",
"levels" : [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]
}
})
sql_compute_context = RxInSqlServer(
connection_string = sql_connection_string,
num_tasks = 4,
auto_cleanup = False
)
#
# Run linmod locally
#
linmod_local = rx_lin_mod("ArrDelay ~ DayOfWeek", data = data_source)
#
# Run linmod remotely
#
linmod = rx_lin_mod("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
# Predict results
#
predict = rx_predict(linmod, data = rx_import(input_data = data_source))
summary = rx_summary("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
Adatforrás definiálása és számítási környezet meghatározása
Az adatforrások eltérnek a számítási környezettől. Az adatforrás határozza meg a kódban használt adatokat. A számítási környezet határozza meg a kód végrehajtásának helyét. Ezek azonban a következő információk némelyikét használják:
Python-változók, például
sql_queryéssql_connection_string, határozzák meg az adatok forrását.Adja át ezeket a változókat az RxSqlServerData konstruktornak a névvel ellátott
data_sourceimplementálásához.A számítási környezet objektumát az RxInSqlServer konstruktor használatával hozhatja létre. Az eredményként kapott számítási környezet objektum neve
sql_cc.Ez a példa ugyanazt a kapcsolati sztringet használja újra, amelyet az adatforrásban használt, feltételezve, hogy az adatok ugyanazon az SQL Server-példányon vannak, amelyet számítási környezetként fog használni.
Az adatforrás és a számítási környezet azonban különböző kiszolgálókon is lehet.
Számítási környezetek módosítása
A számítási környezet definiálása után be kell állítania az aktív számítási környezetet.
Alapértelmezés szerint a legtöbb művelet helyileg fut, ami azt jelenti, hogy ha nem ad meg másik számítási környezetet, az adatok az adatforrásból lesznek lekérve, és a kód az aktuális Python-környezetben fog futni.
Az aktív számítási környezet kétféleképpen állítható be:
- Metódus vagy függvény argumentumaként
- A
rx_set_computecontexthívásával
Számítási környezet beállítása metódus vagy függvény argumentumaként
Ebben a példában a számítási környezetet az egyes rx függvény argumentumával állítja be.
linmod = rx_lin_mod_ex("ArrDelay ~ DayOfWeek", data = data, compute_context = sql_compute_context)
Ezt a számítási környezetet a rendszer újra felhasználja az rxsummary hívásában:
summary = rx_summary("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
Számítási környezet explicit beállítása rx_set_compute_context használatával
A függvény rx_set_compute_context lehetővé teszi a már definiált számítási környezetek közötti váltást.
Az aktív számítási környezet beállítása után az aktív marad, amíg meg nem változtatja.
Párhuzamos feldolgozás és streamelés használata
A számítási környezet meghatározásakor olyan paramétereket is beállíthat, amelyek szabályozzák az adatok számítási környezet általi kezelését. Ezek a paraméterek az adatforrás típusától függően eltérőek.
SQL Server számítási környezetek esetén beállíthatja a köteg méretét, vagy tippeket adhat a párhuzamosság mértékéről a futó feladatokban.
- A mintát egy négy processzorral rendelkező számítógépen futtatták, így a
num_tasksparaméter értéke 4, így lehetővé teszi az erőforrások maximális használatát. - Ha ezt az értéket 0 értékre állítja, az SQL Server az alapértelmezett értéket használja, amely a kiszolgáló jelenlegi MAXDOP-beállításai között a lehető legtöbb feladat párhuzamos futtatását teszi lehetővé. A lefoglalható feladatok pontos száma azonban számos egyéb tényezőtől függ, például a kiszolgáló beállításaitól és a futó egyéb feladatoktól.
Következő lépések
Ezek a további Python-minták és oktatóanyagok az összetettebb adatforrásokat használó, végpontok közötti forgatókönyveket, valamint a távoli számítási környezetek használatát mutatják be.