Hantera bibliotek för Apache Spark i Azure Synapse Analytics

Bibliotek ger återanvändbar kod som du kanske vill inkludera i dina program eller projekt för Apache Spark i Azure Synapse Analytics (Azure Synapse Spark).

Du kan behöva uppdatera din serverlösa Apache Spark-poolmiljö av olika skäl. Du kan till exempel hitta följande:

  • Ett av dina kärnberoenden släppte en ny version.
  • Du behöver ett extra paket för att träna din maskininlärningsmodell eller förbereda dina data.
  • Det finns ett bättre paket och du behöver inte längre det äldre paketet.
  • Ditt team har skapat ett anpassat paket som du behöver i din Apache Spark-pool.

Om du vill göra kod från tredje part eller lokalt byggd tillgänglig för dina program installerar du ett bibliotek på en av dina serverlösa Apache Spark-pooler eller en notebook-session.

Översikt över paketnivåer

Det finns tre paketnivåer installerade på Azure Synapse Analytics:

  • Standard: Standardpaket innehåller en fullständig Anaconda-installation, plus extra bibliotek som används ofta. En fullständig lista över bibliotek finns i Stöd för Apache Spark-version.

    När en Spark-instans startar inkluderas dessa bibliotek automatiskt. Du kan lägga till fler paket på de andra nivåerna.

  • Spark-pool: Alla artefakter som körs kan använda paket på Spark-poolnivå. Du kan till exempel koppla notebook- och Spark-jobbdefinitioner till motsvarande Spark-pooler.

    Du kan ladda upp anpassade bibliotek och en specifik version av ett bibliotek med öppen källkod som du vill använda på din Azure Synapse Analytics-arbetsyta. Arbetsytepaketen kan installeras i Spark-poolerna.

  • Session: En installation på sessionsnivå skapar en miljö för en specifik notebook-session. Ändringen av bibliotek på sessionsnivå sparas inte mellan sessioner.

Kommentar

  • Bibliotekshantering på poolnivå kan ta tid, beroende på paketens storlek och komplexiteten i nödvändiga beroenden, så anges den maximala uppdateringstiden som 50 minuter. Ditt bibliotekshanteringsjobb på poolnivå avbryts automatiskt om det överskrider den övre gränsen på 50 minuter. Vi rekommenderar installation på sessionsnivå för experimentella och snabba iterativa scenarier.
  • Bibliotekshanteringen på poolnivå skapar ett stabilt beroende för att köra definitioner för notebook-filer och Spark-jobb. Att installera biblioteket i Spark-poolen rekommenderas starkt för pipelinekörningarna.
  • Bibliotekshantering på sessionsnivå kan hjälpa dig med snabb iteration eller hantera de frekventa ändringarna av biblioteket. Stabiliteten för installation på sessionsnivå utlovas dock inte. Dessutom inaktiveras infogade kommandon som %pip och %conda i pipelinekörningen. Hantering av bibliotek i Notebook-sessionen rekommenderas under utvecklingsfasen.

Hantera arbetsytepaket

När ditt team utvecklar anpassade program eller modeller kan du utveckla olika kodartefakter som .whl, .jar eller .tar.gz filer för att paketera koden.

Viktigt!

  • tar.gz stöds endast för R-språk. Använd .whl som anpassat Python-paket.

I Azure Synapse kan arbetsytepaket vara anpassade eller privata .whl - eller .jar-filer . Du kan ladda upp dessa paket till din arbetsyta och senare tilldela dem till en specifik serverlös Apache Spark-pool. När du har tilldelat dessa arbetsytepaket installeras de automatiskt på alla Spark-poolsessioner.

Mer information om hur du hanterar arbetsytebibliotek finns i Hantera arbetsytepaket.

Hantera poolpaket

I vissa fall kanske du vill standardisera de paket som används i en Apache Spark-pool. Den här standardiseringen kan vara användbar om flera personer i ditt team ofta installerar samma paket.

Genom att använda poolhanteringsfunktionerna i Azure Synapse Analytics kan du konfigurera standarduppsättningen bibliotek som ska installeras på en serverlös Apache Spark-pool. De här biblioteken installeras ovanpå baskörningen.

För Python-bibliotek använder Azure Synapse Spark-pooler Conda för att installera och hantera Python-paketberoenden. Du kan ange Python-bibliotek på poolnivå genom att ange en requirements.txt eller environment.yml fil. Den här miljökonfigurationsfilen används varje gång en Spark-instans skapas från spark-poolen. Du kan också koppla arbetsytepaketen till dina pooler.

Mer information om dessa funktioner finns i Hantera Spark-poolpaket.

Viktigt!

  • Om paketet som du installerar är stort eller tar lång tid att installera kan det påverka Spark-instansens starttid.
  • Det går inte att ändra versionen PySpark, Python, Scala/Java, .NET eller Spark.

Hantera beroenden för DEP-aktiverade Azure Synapse Spark-pooler

Kommentar

Installation av paket från en offentlig lagringsplats stöds inte i DEP-aktiverade arbetsytor. Ladda i stället upp alla dina beroenden som arbetsytebibliotek och installera dem i Spark-poolen.

Om du har problem med att identifiera nödvändiga beroenden följer du dessa steg:

  1. Kör följande skript för att konfigurera en lokal Python-miljö som är samma som Azure Synapse Spark-miljön. Det här skriptet kräver en YAML-fil som innehåller en lista över alla bibliotek som ingår i python-standardmiljön för Azure Synapse Spark. Du hittar den här YAML-filen i dokumentationen för specifika körningsversioner, till exempel Apache Spark 3.2 (Support upphör) och 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. Kör följande skript för att identifiera nödvändiga beroenden. Skriptet kan användas för att skicka din requirements.txt-fil , som innehåller alla paket och versioner som du tänker installera i Spark 3.1- eller Spark 3.2-poolen. Namnet på de nya hjulfilerna/beroendena skrivs ut för dina krav för indatabiblioteket.

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

    Kommentar

    Det här skriptet visar endast de beroenden som inte redan finns i Spark-poolen som standard.

Hantera paket med sessionsomfattning

När du utför interaktiv dataanalys eller maskininlärning kan du prova nyare paket, eller så kan du behöva paket som för närvarande inte är tillgängliga i Apache Spark-poolen. I stället för att uppdatera poolkonfigurationen kan du använda sessionsomfattande paket för att lägga till, hantera och uppdatera sessionsberoenden.

Med paket med sessionsomfattning kan användare definiera paketberoenden i början av sessionen. När du installerar ett paket med sessionsomfattning har endast den aktuella sessionen åtkomst till de angivna paketen. De här paketen med sessionsomfattning påverkar därför inte andra sessioner eller jobb som använder samma Apache Spark-pool. Dessutom installeras dessa bibliotek ovanpå baskörnings- och poolnivåpaketen.

Mer information om hur du hanterar paket med sessionsomfattning finns i följande artiklar:

  • Python-sessionspaket: I början av en session anger du en Conda-environment.yml-filför att installera fler Python-paket från populära lagringsplatser. Du kan också använda %pip kommandon och %conda för att hantera bibliotek i notebook-kodcellerna.

    Viktigt!

    Använd inte%%sh för att försöka installera bibliotek med pip eller conda. Beteendet är inte detsamma som %pip eller %conda.

  • Scala/Java-sessionspaket: I början av sessionen anger du en lista över .jar filer som ska installeras med hjälp %%configureav .

  • R-sessionspaket: I sessionen kan du installera paket över alla noder i Spark-poolen med hjälp install.packages av eller devtools.

Automatisera bibliotekshanteringsprocessen via Azure PowerShell-cmdletar och REST-API:er

Om ditt team vill hantera bibliotek utan att besöka pakethanterings-UIs har du möjlighet att hantera arbetsytepaketen och paketuppdateringar på poolnivå via Azure PowerShell-cmdletar eller REST-API:er för Azure Synapse Analytics.

Mer information finns i följande artiklar:

Nästa steg