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 gemaakt dat u nodig hebt 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 van pakketten geïnstalleerd in Azure Synapse Analytics:

  • Standaard: standaardpakketten bevatten een volledige Anaconda-installatie, plus extra veelgebruikte bibliotheken. Zie de 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 poolniveau kan tijd in beslag nemen, afhankelijk van de grootte van de pakketten en de complexiteit van vereiste afhankelijkheden, de maximale updatetijd is 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 wordt echter niet beloofd. Bovendien worden opdrachten in de regel, zoals %pip en %conda, uitgeschakeld in pijplijnuitvoering. Het beheren van de bibliotheek in notebooksessie 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 te verpakken.

Belangrijk

  • tar.gz wordt alleen ondersteund voor 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 deze later toewijzen aan een specifieke serverloze Apache Spark-pool. Nadat u deze werkruimtepakketten hebt toegewezen, worden ze automatisch geïnstalleerd op alle Spark-poolsessies.

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

Groepspakketten 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 die moeten worden geïnstalleerd op een serverloze Apache Spark-pool. Deze bibliotheken worden boven op de basisruntime geïnstalleerd.

Voor Python-bibliotheken gebruiken Azure Synapse Spark-pools Conda voor het installeren en beheren van Python-pakketafhankelijkheden. U kunt de Python-bibliotheken op groepsniveau 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

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, voert u de volgende stappen uit:

  1. Voer het volgende script uit om een lokale Python-omgeving in te stellen die hetzelfde is als de Azure Synapse Spark-omgeving. Dit script vereist een YAML-bestand 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 (einde van de ondersteuning aangekondigd) 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, met alle pakketten en versies die u wilt installeren in de Spark 3.1- of Spark 3.2-pool. Hiermee worden de namen van de nieuwe wielbestanden/afhankelijkheden voor uw invoerbibliotheekvereisten 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

    Met dit script worden alleen de afhankelijkheden vermeld die niet al 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 sessiebereikpakketten 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 gebruikmaken van dezelfde Apache Spark-pool. Bovendien worden deze bibliotheken geïnstalleerd op basis van de basisruntime- en poolpakketten.

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 bibliotheken in de notebookcodecellen beheren %pip met opdrachten en %conda opdrachten.

    Belangrijk

    Gebruik niet%%sh om bibliotheken met pip of conda te installeren. Het gedrag is niet hetzelfde als %pip of %conda.

  • 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 pakketbeheer-API's te bezoeken, hebt u de mogelijkheid om de werkruimtepakketten en pakketupdates op poolniveau te beheren via Azure PowerShell-cmdlets of REST API's voor Azure Synapse Analytics.

Raadpleeg voor meer informatie de volgende artikelen:

Volgende stappen