Bibliotheken beheren voor Apache Spark in Azure Synapse Analytics

Bibliotheken bieden herbruikbare code die u mogelijk wilt opnemen in uw programma's of projecten voor Apache Spark in Azure Synapse Analytics (Azure Synapse Spark).

Mogelijk moet u om verschillende redenen uw serverloze Apache Spark-poolomgeving bijwerken. U kunt bijvoorbeeld het volgende vinden:

  • Een van uw belangrijkste afhankelijkheden heeft een nieuwe versie uitgebracht.
  • U hebt een extra pakket nodig voor het trainen van uw machine learning-model of het voorbereiden van uw gegevens.
  • Er is een beter pakket beschikbaar en u hebt het oudere pakket niet meer nodig.
  • Uw team heeft een aangepast pakket gebouwd dat beschikbaar moet zijn in uw Apache Spark-pool.

Als u externe of lokaal gebouwde code beschikbaar wilt maken voor uw toepassingen, installeert u een bibliotheek op een van uw serverloze Apache Spark-pools of een notebooksessie.

Overzicht van pakketniveaus

Er zijn drie niveaus met pakketten geïnstalleerd op Azure Synapse Analytics:

  • Standaard: standaardpakketten bevatten een volledige Anaconda-installatie, plus extra veelgebruikte bibliotheken. Zie Ondersteuning voor Apache Spark-versies voor een volledige lijst met bibliotheken.

    Wanneer een Spark-exemplaar wordt gestart, worden deze bibliotheken automatisch opgenomen. U kunt meer pakketten toevoegen op de andere niveaus.

  • Spark-pool: alle actieve artefacten kunnen pakketten op spark-poolniveau gebruiken. U kunt bijvoorbeeld notebook- en Spark-taakdefinities koppelen aan bijbehorende Spark-pools.

    U kunt aangepaste bibliotheken en een specifieke versie van een opensource-bibliotheek uploaden die u wilt gebruiken in uw Azure Synapse Analytics-werkruimte. De werkruimtepakketten kunnen worden geïnstalleerd in uw Spark-pools.

  • Sessie: Een installatie op sessieniveau maakt een omgeving voor een specifieke notebooksessie. De wijziging van bibliotheken op sessieniveau blijft niet behouden tussen sessies.

Notitie

  • Bibliotheekbeheer op groepsniveau kan tijd in beslag nemen, afhankelijk van de grootte van de pakketten en de complexiteit van de vereiste afhankelijkheden, wordt de maximale updatetijd ingesteld op 50 minuten. Uw bibliotheekbeheertaak op poolniveau wordt automatisch geannuleerd als deze de bovengrens van 50 minuten overschrijdt. We raden de installatie op sessieniveau aan voor experimentele en snelle iteratieve scenario's.
  • Het bibliotheekbeheer op poolniveau produceert een stabiele afhankelijkheid voor het uitvoeren van uw notebooks en Spark-taakdefinities. Het installeren van de bibliotheek in uw Spark-pool wordt ten zeerste aanbevolen voor de pijplijnuitvoeringen.
  • Bibliotheekbeheer op sessieniveau kan u helpen bij snelle iteratie of het omgaan met de frequente wijzigingen van de bibliotheek. De stabiliteit van de installatie op sessieniveau is echter niet beloofd. Bovendien worden inline-opdrachten zoals %pip en %conda uitgeschakeld in pijplijnuitvoering. Het beheren van de bibliotheek in de Notebook-sessie wordt aanbevolen tijdens de ontwikkelingsfase.

Werkruimtepakketten beheren

Wanneer uw team aangepaste toepassingen of modellen ontwikkelt, kunt u verschillende codeartefacten ontwikkelen, zoals .whl-, .jar- of .tar.gz-bestanden om uw code in te pakken.

Belangrijk

  • tar.gz wordt alleen ondersteund voor de R-taal. Gebruik .whl als aangepast Python-pakket.

In Azure Synapse kunnen werkruimtepakketten aangepaste of persoonlijke .whl- of .jar-bestanden zijn. U kunt deze pakketten uploaden naar uw werkruimte en ze later toewijzen aan een specifieke serverloze Apache Spark-pool. Nadat u deze werkruimtepakketten hebt toegewezen, worden ze automatisch geïnstalleerd in alle Spark-poolsessies.

Zie Werkruimtepakketten beheren voor meer informatie over het beheren van werkruimtebibliotheken.

Poolpakketten beheren

In sommige gevallen wilt u mogelijk de pakketten die worden gebruikt in een Apache Spark-pool standaardiseren. Deze standaardisatie kan handig zijn als meerdere personen in uw team vaak dezelfde pakketten installeren.

Met behulp van de poolbeheermogelijkheden van Azure Synapse Analytics kunt u de standaardset bibliotheken configureren voor installatie op een serverloze Apache Spark-pool. Deze bibliotheken worden geïnstalleerd boven op de basisruntime.

Voor Python-bibliotheken gebruiken Azure Synapse Spark-pools Conda voor het installeren en beheren van Python-pakketafhankelijkheden. U kunt de Python-bibliotheken op poolniveau opgeven door een requirements.txt - of environment.yml-bestand op te geven. Dit omgevingsconfiguratiebestand wordt gebruikt telkens wanneer een Spark-exemplaar wordt gemaakt op basis van die Spark-pool. U kunt de werkruimtepakketten ook koppelen aan uw pools.

Zie Spark-poolpakketten beheren voor meer informatie over deze mogelijkheden.

Belangrijk

  • Als het pakket dat u installeert groot is of lang duurt voordat het is geïnstalleerd, kan dit van invloed zijn op de opstarttijd van het Spark-exemplaar.
  • Het wijzigen van de PySpark-, Python-, Scala-/Java-, .NET- of Spark-versie wordt niet ondersteund.

Afhankelijkheden beheren voor Azure Synapse Spark-pools met DEP-functionaliteit

Notitie

Het installeren van pakketten vanuit een openbare opslagplaats wordt niet ondersteund in werkruimten met DEP-functionaliteit. Upload in plaats daarvan al uw afhankelijkheden als werkruimtebibliotheken en installeer ze in uw Spark-pool.

Als u problemen ondervindt bij het identificeren van vereiste afhankelijkheden, volgt u deze stappen:

  1. Voer het volgende script uit om een lokale Python-omgeving in te stellen die hetzelfde is als de Azure Synapse Spark-omgeving. Voor dit script is een YAML-bestand vereist met een lijst met alle bibliotheken die zijn opgenomen in de standaard Python-omgeving voor Azure Synapse Spark. U vindt dit YAML-bestand in de documentatie voor specifieke runtimeversies, zoals Apache Spark 3.2 (EOLA) en Apache Spark 3.3 (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. Voer het volgende script uit om de vereiste afhankelijkheden te identificeren. Het script kan worden gebruikt om uw requirements.txt-bestand door te geven, dat alle pakketten en versies bevat die u wilt installeren in de Spark 3.1- of Spark 3.2-pool. De namen van de nieuwe wielbestanden/afhankelijkheden voor de vereisten van uw invoerbibliotheek worden afgedrukt.

       # 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 *"
    

    Notitie

    In dit script worden alleen de afhankelijkheden vermeld die nog niet standaard aanwezig zijn in de Spark-pool.

Pakketten met sessiebereik beheren

Wanneer u interactieve gegevensanalyse of machine learning uitvoert, kunt u nieuwere pakketten proberen of hebt u mogelijk pakketten nodig die momenteel niet beschikbaar zijn in uw Apache Spark-pool. In plaats van de poolconfiguratie bij te werken, kunt u pakketten met sessiebereik gebruiken om sessieafhankelijkheden toe te voegen, te beheren en bij te werken.

Met pakketten met sessiebereik kunnen gebruikers pakketafhankelijkheden definiëren aan het begin van hun sessie. Wanneer u een pakket met sessiebereik installeert, heeft alleen de huidige sessie toegang tot de opgegeven pakketten. Als gevolg hiervan hebben deze pakketten met sessiebereik geen invloed op andere sessies of taken die dezelfde Apache Spark-pool gebruiken. Bovendien worden deze bibliotheken geïnstalleerd op de basisruntime en pakketten op groepsniveau.

Zie de volgende artikelen voor meer informatie over het beheren van pakketten met sessiebereik:

  • Python-sessiepakketten: geef aan het begin van een sessie een Conda environment.yml-bestand op om meer Python-pakketten te installeren vanuit populaire opslagplaatsen. U kunt ook de opdrachten %pip en %conda gebruiken om bibliotheken in de notebookcodecellen te beheren.

  • Scala-/Java-sessiepakketten: geef aan het begin van uw sessie een lijst op met JAR-bestanden die u wilt installeren met behulp van %%configure.

  • R-sessiepakketten: binnen uw sessie kunt u pakketten installeren op alle knooppunten in uw Spark-pool met behulp van install.packages of devtools.

Het bibliotheekbeheerproces automatiseren via Azure PowerShell-cmdlets en REST API's

Als uw team bibliotheken wil beheren zonder de gebruikersinterfaces voor pakketbeheer te bezoeken, hebt u de mogelijkheid om de werkruimtepakketten en pakketupdates op groepsniveau te beheren via Azure PowerShell cmdlets of REST API's voor Azure Synapse Analytics.

Raadpleeg voor meer informatie de volgende artikelen:

Volgende stappen