Apache Spark-kódtárak felügyelete az Azure Synapse Analyticsben
A kódtárak olyan újrafelhasználható kódot biztosítanak, amelyet érdemes lehet az Azure Synapse Analyticsben (Azure Synapse Spark) használni az Apache Spark programjaiban vagy projektjeiben.
Előfordulhat, hogy több okból is frissítenie kell a kiszolgáló nélküli Apache Spark-készletkörnyezetet. Előfordulhat például, hogy a következőt találja:
- Az egyik alapvető függőség kiadott egy új verziót.
- További csomagra van szüksége a gépi tanulási modell betanításához vagy az adatok előkészítéséhez.
- Jobb csomag érhető el, és már nincs szüksége a régebbi csomagra.
- A csapata létrehozott egy egyéni csomagot, amely az Apache Spark-készletben elérhető.
Ha külső vagy helyileg létrehozott kódot szeretne elérhetővé tenni az alkalmazások számára, telepítsen egy kódtárat az egyik kiszolgáló nélküli Apache Spark-készletre vagy egy jegyzetfüzet-munkamenetre.
A csomagszintek áttekintése
Az Azure Synapse Analyticsben három csomagszint van telepítve:
Alapértelmezett: Az alapértelmezett csomagok teljes Anaconda-telepítést és további gyakran használt kódtárakat tartalmaznak. A kódtárak teljes listáját az Apache Spark verziótámogatásában találja.
Amikor elindul egy Spark-példány, a rendszer automatikusan tartalmazza ezeket a kódtárakat. A többi szinten további csomagokat is hozzáadhat.
Spark-készlet: Minden futó összetevő használhat csomagokat a Spark-készlet szintjén. Csatolhat például jegyzetfüzetet és Spark-feladatdefiníciókat a megfelelő Spark-készletekhez.
Az Azure Synapse Analytics-munkaterületen egyéni kódtárakat és egy nyílt forráskódú tár egy adott verzióját töltheti fel. A munkaterület-csomagok telepíthetők a Spark-készletekben.
Munkamenet: A munkamenetszintű telepítés létrehoz egy környezetet egy adott jegyzetfüzet-munkamenethez. A munkamenetszintű kódtárak módosítása nem marad meg a munkamenetek között.
Feljegyzés
- A készletszintű kódtár-kezelés a csomagok méretétől és a szükséges függőségek összetettségétől függően időt vehet igénybe, a maximális frissítési idő 50 perc. A készletszintű kódtár-felügyeleti feladat automatikusan megszakad, ha túllépi az 50 perces felső korlátot. Kísérleti és gyors iteratív forgatókönyvekhez javasoljuk a munkamenetszintű telepítést.
- A készletszintű erőforrástár-kezelés stabil függőséget hoz létre a jegyzetfüzetek és a Spark-feladatok definícióinak futtatásához. A folyamatfuttatásokhoz erősen ajánlott telepíteni a kódtárat a Spark-készletbe.
- A munkamenetszintű tár kezelése segíthet a gyors iterációban vagy a tár gyakori változásainak kezelésében. A munkamenet-szintű telepítés stabilitását azonban nem ígérik. Emellett a folyamatfuttatás során az olyan in-line parancsok, mint a %pip és a %conda le vannak tiltva. A jegyzetfüzet-munkamenetben a kódtár kezelése a fejlesztési fázisban ajánlott.
Munkaterület-csomagok kezelése
Amikor a csapat egyéni alkalmazásokat vagy modelleket fejleszt, különböző kódösszetevőket fejleszthet, például .whl, .jar vagy .tar.gz fájlokat a kód csomagolásához.
Fontos
- tar.gz csak R nyelv esetén támogatott. Használjon .whl-t Python-egyéni csomagként.
Az Azure Synapse-ban a munkaterület-csomagok lehetnek egyéni vagy privát .whl - vagy .jar fájlok. Ezeket a csomagokat feltöltheti a munkaterületre, és később hozzárendelheti őket egy adott kiszolgáló nélküli Apache Spark-készlethez. Miután hozzárendelte ezeket a munkaterület-csomagokat, azok automatikusan települnek az összes Spark-készlet-munkamenetre.
A munkaterület-kódtárak kezelésével kapcsolatos további információkért lásd : Munkaterület-csomagok kezelése.
Készletcsomagok kezelése
Bizonyos esetekben érdemes lehet szabványosítani az Apache Spark-készletben használt csomagokat. Ez a szabványosítás akkor lehet hasznos, ha a csapat több tagja gyakran telepíti ugyanazokat a csomagokat.
Az Azure Synapse Analytics készletkezelési képességeinek használatával konfigurálhatja az alapértelmezett kódtárakat úgy, hogy egy kiszolgáló nélküli Apache Spark-készletre telepítsenek. Ezek a kódtárak az alap futtatókörnyezetre vannak telepítve.
Python-kódtárak esetén az Azure Synapse Spark-készletek a Conda használatával telepítik és kezelik a Python-csomag függőségeit. A készletszintű Python-kódtárakat egy requirements.txt vagy environment.yml fájl megadásával adhatja meg. Ez a környezetkonfigurációs fájl minden alkalommal használatos, amikor létrehoz egy Spark-példányt az adott Spark-készletből. A munkaterület-csomagokat a készletekhez is csatolhatja.
További információ ezekről a képességekről: Spark-készletcsomagok kezelése.
Fontos
- Ha a telepített csomag nagy méretű, vagy a telepítés hosszú időt vesz igénybe, az hatással lehet a Spark-példány indítási idejére.
- A PySpark, a Python, a Scala/Java, a .NET vagy a Spark verzió módosítása nem támogatott.
A DEP-kompatibilis Azure Synapse Spark-készletek függőségeinek kezelése
Feljegyzés
A csomagok nyilvános adattárból való telepítése a DEP-kompatibilis munkaterületeken nem támogatott. Ehelyett töltse fel az összes függőséget munkaterület-kódtárakként, és telepítse őket a Spark-készletbe.
Ha nem találja a szükséges függőségeket, kövesse az alábbi lépéseket:
Futtassa a következő szkriptet egy olyan helyi Python-környezet beállításához, amely megegyezik az Azure Synapse Spark-környezettel. Ehhez a szkripthez egy YAML-fájl szükséges, amely tartalmazza az Azure Synapse Spark alapértelmezett Python-környezetében található összes kódtár listáját. Ezt a YAML-fájlt az egyes futtatókörnyezeti verziók dokumentációjában találja, például az Apache Spark 3.2 -t (a támogatás megszűnését bejelentették) és az Apache Spark 3.3-at (GA).
# One-time Azure Synapse Python setup wget Synapse-Python38-CPU.yml sudo bash Miniforge3-Linux-x86_64.sh -b -p /usr/lib/miniforge3 export PATH="/usr/lib/miniforge3/bin:$PATH" sudo apt-get -yq install gcc g++ conda env create -n synapse-env -f Synapse-Python38-CPU.yml source activate synapse-env
Futtassa a következő szkriptet a szükséges függőségek azonosításához. A szkript a requirements.txt fájl átadására használható, amely a Spark 3.1 vagy a Spark 3.2 készletbe telepíteni kívánt összes csomaggal és verzióval rendelkezik. Kinyomtatja az új kerékfájlok/függőségek nevét a bemeneti kódtár követelményeinek megfelelően.
# Command to list wheels needed for your input libraries. # This command will list only new dependencies that are # not already part of the built-in Azure Synapse environment. pip install -r <input-user-req.txt> > pip_output.txt cat pip_output.txt | grep "Using cached *"
Feljegyzés
Ez a szkript alapértelmezés szerint csak azokat a függőségeket sorolja fel, amelyek még nincsenek jelen a Spark-készletben.
Munkamenet-hatókörű csomagok kezelése
Ha interaktív adatelemzést vagy gépi tanulást végez, kipróbálhat újabb csomagokat, vagy szükség lehet olyan csomagokra, amelyek jelenleg nem érhetők el az Apache Spark-készletben. A készletkonfiguráció frissítése helyett munkamenet-hatókörű csomagokat használhat a munkamenet-függőségek hozzáadására, kezelésére és frissítésére.
A munkamenet-hatókörű csomagok lehetővé teszik, hogy a felhasználók a munkamenet elején definiálják a csomagfüggőségeket. Munkamenet-hatókörű csomag telepítésekor csak az aktuális munkamenet fér hozzá a megadott csomagokhoz. Ennek eredményeképpen ezek a munkamenet-hatókörű csomagok nem érintik az azonos Apache Spark-készletet használó más munkameneteket vagy feladatokat. Emellett ezek a kódtárak az alap futtatókörnyezeti és készletszintű csomagokra is telepítve vannak.
A munkamenet-hatókörű csomagok kezelésével kapcsolatos további információkért tekintse meg az alábbi cikkeket:
Python-munkamenetcsomagok: A munkamenet elején adjon meg egy Conda environment.yml fájlt, amely további Python-csomagokat telepít a népszerű adattárakból. Vagy használhatja
%pip
és%conda
parancsokkal kezelheti a jegyzetfüzet kódcelláiban lévő kódtárakat.Fontos
Ne próbálja
%%sh
ki és telepítse a kódtárakat pip vagy conda használatával. A viselkedés nem ugyanaz , mint %pip vagy %conda.Scala/Java-munkamenetcsomagok: A munkamenet elején adja meg a telepítéshez
%%configure
szükséges .jar fájlok listáját.R-munkamenetcsomagok: A munkameneten belül a Spark-készlet összes csomópontjához telepíthet csomagokat a használatával
install.packages
vagydevtools
használatával.
A kódtár-kezelési folyamat automatizálása Azure PowerShell-parancsmagokkal és REST API-kkal
Ha a csapat a csomagkezelési felhasználói felületek felkeresése nélkül szeretné kezelni a kódtárakat, lehetősége van a munkaterületi csomagok és a készletszintű csomagfrissítések kezelésére az Azure PowerShell-parancsmagok vagy az Azure Synapse Analytics REST API-jai segítségével.
További információért tekintse át az alábbi cikkeket:
- Spark-készlettárak kezelése REST API-k használatával
- Spark-készlettárak kezelése Azure PowerShell-parancsmagokkal