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:

  1. 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
    
  2. 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 %%configureszü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 vagy devtoolshaszná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:

Következő lépések