Hantera Apache Spark-bibliotek i Microsoft Fabric

Ett bibliotek är ett återanvändbart paket med kod – till exempel ett Python-paket från PyPI, ett R-paket från CRAN eller en Java JAR – som du kan importera till dina notebook-filer och Spark-jobbdefinitioner för att lägga till funktioner utan att skriva det från grunden. Microsoft Fabric innehåller flera mekanismer som hjälper dig att hantera och använda bibliotek.

  • Inbyggda bibliotek: Varje Fabric Spark-körning ger en omfattande uppsättning populära förinstallerade bibliotek. Du hittar den fullständiga inbyggda bibliotekslistan i Fabric Spark Runtime.
  • Offentliga bibliotek: Offentliga bibliotek kommer från lagringsplatser som PyPI och Conda, som för närvarande stöds.
  • Anpassade bibliotek: Anpassade bibliotek refererar till kod som du eller din organisation skapar. Fabric stöder dem i formaten .whl, .jar och .tar.gz . Fabric stöder endast .tar.gz för R-språket. För anpassade Python-bibliotek använder du formatet .whl .

Sammanfattning av metodtips för bibliotekshantering

I följande scenarier beskrivs metodtips när du använder bibliotek i Microsoft Fabric.

Lägen för miljöpublicering (snabb kontra fullständig)

När du installerar bibliotek i en Infrastrukturmiljö väljer du ett publiceringsläge som styr hur bibliotek levereras till dina Spark-sessioner.

  • Snabbläget publiceras om cirka 5 sekunder. Bibliotek installeras när en notebook-session startar istället för vid publiceringen. Om ett snabblägespaket har samma namn som ett paket i fullständigt läge åsidosätter snabblägesversionen endast versionen i fullständigt läge för den sessionen. Använd snabbläge för snabb, iterativ utveckling av notebook-filer och tidiga experiment.
  • Fullständigt läge skapar en stabil, reproducerbar ögonblicksbild av biblioteket. Publiceringen tar vanligtvis 3 till 6 minuter eftersom systemet löser beroenden och validerar kompatibiliteten. Sessionsstarten lägger till 1 till 3 minuter för distribution av beroenden, beroende på storleken av dessa beroenden. Använd "Full mode" för pipelines, schemalagda körningar och delade arbetsbelastningar som kräver konsekventa, reproducerbara miljöer.

Fullständigt läge med en anpassad livepool

Om du vill kombinera stabiliteten i fullständigt läge med snabba sessionsstarter konfigurerar du en anpassad livepool som ansluter till en miljö i fullständigt läge. Livepoolen återfuktar kluster med ögonblicksbilden av biblioteket i fullständigt läge i förväg, vilket möjliggör ungefär 5 sekunders sessionsstarttider samtidigt som den reproducerbara ögonblicksbilden bevaras.

Mer information om varje läge finns i Hantera bibliotek i Infrastrukturmiljöer.

Scenario 1: Administratör anger standardbibliotek för arbetsytan

Om du vill ange standardbibliotek måste du vara administratör för arbetsytan. Som administratör kan du utföra följande uppgifter:

  1. Skapa en ny miljö
  2. Installera de bibliotek som krävs i miljön
  3. Bifoga den här miljön som standard för arbetsytan

När dina notebook-filer och Spark-jobbdefinitioner är kopplade till arbetsyteinställningarna startar de sessioner med biblioteken installerade i arbetsytans standardmiljö.

Scenario 2: Spara biblioteksspecifikationer för ett eller flera kodobjekt

Om du har vanliga bibliotek för olika kodobjekt och inte behöver uppdatera dem ofta installerar du biblioteken i en miljö och kopplar det till kodobjekten.

Publiceringstiden beror på vilket läge du väljer. Snabbläget publiceras på cirka 5 sekunder och installerar bibliotek vid sessionsstart. Fullständigt läge löser beroenden och skapar en stabil ögonblicksbild. Det tar vanligtvis 3 till 6 minuter att publicera och sessionsstart lägger till 1 till 3 minuter för beroendedistribution.

Fördelen med den här metoden är att bibliotek som har installerats garanterat är tillgängliga när en Spark-session börjar med den anslutna miljön. Det sparar arbetet med att underhålla vanliga bibliotek för dina projekt och rekommenderas för pipelinescenarier på grund av dess stabilitet.

Scenario 3: Inbyggd installation vid interaktiv körning

Om du skriver kod interaktivt i en notebook är inline-installation den bästa metoden för att lägga till PyPI- eller conda-bibliotek eller validera anpassade bibliotek för engångsbruk. Inbyggda kommandon gör ett bibliotek tillgängligt endast i den aktuella notebook-Spark-sessionen – de tillåter snabb installation, men det installerade biblioteket bevaras inte mellan sessioner.

Eftersom %pip install kan generera olika beroendeträd från körning till körning, vilket kan leda till bibliotekskonflikter, inaktiveras infogade kommandon som standard i pipelinekörningar och rekommenderas inte för pipelines.

Kommentar

Bibliotek som installeras via infogade kommandon (till exempel %pip install eller %conda install) och bibliotek som har lagts till från en notebook-fil eller miljöresursmapp är begränsade till den aktuella sessionen eller notebook-filen. De påverkas inte av miljöpublicering i antingen snabbläge eller fullständigt läge.

Sammanfattning av bibliotekstyper som stöds

Bibliotekstyp Hantering av miljöbibliotek Inline-installation
Python Public (PyPI & Conda) Stöds Stöds
Anpassad Python-modul (.whl) Stöds Stöds
R Public (CRAN) Stöds inte Stöds
Anpassad R (.tar.gz) Stöds som anpassat bibliotek Stöds
Burk Stöds som anpassat bibliotek Stöds

Direktinstallation

Med infogade kommandon kan du hantera bibliotek i enskilda notebook-sessioner.

Python inlinjeinstallation

Systemet startar om Python-tolken för att tillämpa biblioteksändringar. Alla variabler som definierats innan du kör kommandocellen går förlorade. Placera alla kommandon för att lägga till, ta bort eller uppdatera Python-paket i början av notebook-filen.

Infogade kommandon för att hantera Python-bibliotek är inaktiverade i notebook-pipelinekörningar som standard. Om du vill aktivera %pip install för en pipeline lägger du till _inlineInstallationEnabled som en boolesk parameter inställd på True i notebook-aktivitetsparametrarna.

Skärmbild som visar konfigurationen för att aktivera pip-installering för notebook-pipelinekörning.

Kommentar

Kommandot %pip install kan ge inkonsekventa resultat från körning till körning. Installera bibliotek i en miljö och använd miljön i en pipeline i stället. Kommandot %pip install stöds inte i Hög samtidighetsläge. I notebook-referenskörningar stöds inte infogade kommandon för att hantera Python-bibliotek. Ta bort de här infogade kommandona från den refererade notebooken för att säkerställa korrekt utförande.

Använd %pip i stället för !pip. Kommandot !pip är ett inbyggt IPython-kommando med följande begränsningar:

  • !pip installerar endast ett paket på drivrutinsnoden, inte på körnoder.
  • Paket som installeras via !pip tar inte hänsyn till konflikter med inbyggda paket eller paket som redan har importerats i en notebook-fil.

%pip hanterar dessa scenarier. Bibliotek som installeras via %pip är tillgängliga på både drivrutins- och körnoder och börjar gälla även om biblioteket redan har importerats.

Tips

Kommandot %conda install tar vanligtvis längre tid än %pip install kommandot för att installera nya Python-bibliotek. Den kontrollerar de fullständiga beroendena och löser konflikter.

Använd %conda install för mer tillförlitlighet och stabilitet. Använd %pip install om du är säker på att det bibliotek som du vill installera inte står i konflikt med de förinstallerade biblioteken i körningsmiljön.

Alla tillgängliga kommandon och förtydliganden i Python finns i %pip-kommandon och %conda-kommandon.

Hantera offentliga Python-bibliotek via direktinstallation

Det här exemplet visar hur du använder infogade kommandon för att hantera bibliotek. Anta att du vill använda altair, ett kraftfullt visualiseringsbibliotek för Python, för en engångsdatautforskning och att biblioteket inte är installerat på din arbetsyta. I följande exempel används conda-kommandon för att illustrera stegen.

Du kan använda infogade kommandon för att aktivera altair i notebook-sessionen utan att påverka andra sessioner i notebook-filen eller andra objekt.

  1. Kör följande kommandon i en notebook-kodcell. Det första kommandot installerar altair-biblioteket . Installera även vega_datasets, som innehåller en semantisk modell som du kan använda för att visualisera.

    %conda install altair          # install latest version through conda command
    %conda install vega_datasets   # install latest version through conda command
    

    Cellens utdata anger resultatet av installationen.

  2. Importera paketet och semantikmodellen genom att köra följande kod i en annan notebook-cell.

    import altair as alt
    from vega_datasets import data
    
  3. Nu kan du leka med altair-biblioteket med sessionsomfattning.

    # load a simple dataset as a pandas DataFrame
    cars = data.cars()
    alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    ).interactive()
    

Hantera anpassade Python-bibliotek genom integrerad installation

Du kan ladda upp dina anpassade Python-bibliotek till resursmappen i anteckningsboken eller den anslutna miljön. Resursmappen är ett inbyggt filsystem som tillhandahålls av varje anteckningsbok och miljö. Mer information finns i Notebook-resurser . När du har laddat upp ett bibliotek kan du dra och släppa det i en kodcell för att automatiskt generera installationskommandot. Eller så kan du köra följande kommando:

# install the .whl through pip command from the notebook built-in folder
%pip install "builtin/wheel_file_name.whl"             

Kommentar

Anpassade bibliotek som installeras från Resurser-mappen via inbäddade kommandon är per session och per notebook. De påverkas inte av miljöpublicering.

Infogad R-installation

För att hantera R-bibliotek har Fabric stöd för kommandona install.packages(), remove.packages()och devtools:: . Alla tillgängliga R-infogade kommandon och förtydliganden finns i kommandot install.packages och kommandot remove.package.

Hantera publika R-bibliotek via installation direkt i koden.

Följ det här exemplet om du vill gå igenom stegen för att installera ett offentligt R-bibliotek.

Så här installerar du ett R-feedbibliotek:

  1. Växla arbetsspråket till SparkR (R) i notebook-menyfliksområdet.

  2. Installera Caesar-biblioteket genom att köra följande kommando i en notebook-cell.

    install.packages("caesar")
    
  3. Nu kan du experimentera med det sessionbaserade caesar-biblioteket med ett Spark-jobb.

    library(SparkR)
    sparkR.session()
    
    hello <- function(x) {
    library(caesar)
    caesar(x)
    }
    spark.lapply(c("hello world", "good morning", "good evening"), hello)
    

Hantera Jar-bibliotek via direktinstallation

Du kan lägga till .jar filer i notebook-sessioner med följande kommando.

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<Lakehouse prefix>>.dfs.fabric.microsoft.com/<<path to JAR file>>/<<JAR file name>>.jar",
    }
}        

I föregående kodcell används lakehouse-lagring som exempel. I notebook-utforskaren kan du kopiera filens fullständiga ABFS-sökväg och ersätta den i koden. Skärmbild av menykommandona för att hämta ABFS-sökvägen.