Apache Spark-bibliotheken beheren in Microsoft Fabric

Een bibliotheek is een herbruikbaar pakket met code, zoals een Python-pakket van PyPI, een R-pakket van CRAN of een Java JAR, dat u kunt importeren in uw notebooks en Spark-taakdefinities om functionaliteit toe te voegen zonder deze helemaal zelf te schrijven. Microsoft Fabric biedt meerdere mechanismen om bibliotheken te beheren en te gebruiken.

  • Ingebouwde bibliotheken: Elke Fabric Spark-runtime biedt een uitgebreide set populaire vooraf geïnstalleerde bibliotheken. U vindt de volledige ingebouwde bibliotheeklijst in Fabric Spark Runtime.
  • Openbare bibliotheken: openbare bibliotheken zijn afkomstig uit opslagplaatsen zoals PyPI en Conda, die momenteel worden ondersteund.
  • Aangepaste bibliotheken: Aangepaste bibliotheken verwijzen naar code die u of uw organisatie bouwt. Fabric ondersteunt ze in de indelingen .whl, .jar en .tar.gz . Fabric ondersteunt alleen .tar.gz voor de R-taal. Voor aangepaste Python-bibliotheken gebruikt u de .whl-indeling .

Samenvatting van aanbevolen procedures voor bibliotheekbeheer

In de volgende scenario's worden aanbevolen procedures beschreven bij het gebruik van bibliotheken in Microsoft Fabric.

Omgevingspublicatiemodi (snel versus volledig)

Wanneer u bibliotheken in een Fabric-omgeving installeert, kiest u een publicatiemodus die bepaalt hoe bibliotheken aan uw Spark-sessies worden geleverd.

  • De snelle modus publiceert in ongeveer 5 seconden. Bibliotheken worden geïnstalleerd wanneer een notebooksessie wordt gestart in plaats van tijdens het publiceren. Als een pakket snelle modus dezelfde naam heeft als een pakket met volledige modus, overschrijft de versie van de snelle modus alleen de versie van de volledige modus voor die sessie. Gebruik de snelle modus voor snelle, iteratieve notebookontwikkeling en vroege experimenten.
  • Volledige modus maakt een stabiele, reproduceerbare momentopname van de bibliotheek. Het publiceren duurt doorgaans 3 tot 6 minuten omdat het systeem afhankelijkheden oplost en compatibiliteit valideert. Tijdens het opstarten van de sessie wordt 1 tot 3 minuten toegevoegd voor de implementatie van afhankelijkheden, afhankelijk van de afhankelijkheidsgrootte. Gebruik de volledige modus voor pijplijnen, geplande uitvoeringen en gedeelde workloads waarvoor consistente, reproduceerbare omgevingen zijn vereist.

Volledige modus met een aangepaste livepool

Als u de stabiliteit van de volledige modus wilt combineren met snelle sessiestarts, configureert u een aangepaste livepool die is gekoppeld aan een omgeving in de volledige modus. De live-pool hydrateert clusters vooraf met de volledige modus bibliotheekmomentopname, waardoor de sessie-starttijden van ongeveer 5 seconden mogelijk zijn, terwijl de reproduceerbare momentopname behouden blijft.

Zie Bibliotheken beheren in Fabric-omgevingen voor meer informatie over elke modus.

Scenario 1: Beheerder stelt standaardbibliotheken in voor de werkruimte

Als u standaardbibliotheken wilt instellen, moet u de beheerder van de werkruimte zijn. Als beheerder kunt u deze taken uitvoeren:

  1. Een nieuwe omgeving maken
  2. De vereiste bibliotheken installeren in de omgeving
  3. Deze omgeving koppelen als de standaardinstelling voor de werkruimte

Wanneer uw notebooks en Spark-taakdefinities zijn gekoppeld aan de werkruimte-instellingen, starten ze sessies met de bibliotheken die zijn geïnstalleerd in de standaardomgeving van de werkruimte.

Scenario 2: Bibliotheekspecificaties behouden voor een of meer code-items

Als u algemene bibliotheken voor verschillende code-items hebt en ze niet regelmatig hoeft bij te werken, installeert u de bibliotheken in een omgeving en koppelt u deze aan de code-items.

De publicatietijd is afhankelijk van de modus die u kiest. De snelle modus publiceert over ongeveer 5 seconden en installeert bibliotheken bij het starten van de sessie. De volledige modus lost afhankelijkheden op en maakt een stabiele momentopname; Het duurt doorgaans 3 tot 6 minuten om te publiceren en het opstarten van sessies voegt 1 tot 3 minuten toe voor de implementatie van afhankelijkheden.

Het voordeel van deze aanpak is dat geïnstalleerde bibliotheken gegarandeerd beschikbaar zijn wanneer een Spark-sessie begint met de gekoppelde omgeving. Het bespaart de moeite om algemene bibliotheken voor uw projecten te onderhouden en wordt aanbevolen voor pijplijnscenario's vanwege de stabiliteit.

Scenario 3: Inline-installatie bij interactieve uitvoering

Als u interactief code schrijft in een notebook, is inline-installatie de beste methode voor het toevoegen van PyPI- of Conda-bibliotheken of het valideren van aangepaste bibliotheken voor eenmalig gebruik. Inlineopdrachten maken een bibliotheek alleen beschikbaar in de huidige Spark-sessie van het notebook. Ze staan snelle installatie toe, maar de geïnstalleerde bibliotheek blijft niet behouden tussen sessies.

Omdat %pip install er verschillende afhankelijkheidsstructuren kunnen worden gegenereerd van uitvoering tot uitvoering, wat kan leiden tot bibliotheekconflicten, worden inlineopdrachten standaard uitgeschakeld in pijplijnuitvoeringen en worden ze niet aanbevolen voor pijplijnen.

Notitie

Bibliotheken die zijn geïnstalleerd via inlineopdrachten (zoals %pip install of %conda install) en bibliotheken die zijn toegevoegd vanuit een notebookmap of omgevings Resources-map, zijn beperkt tot de huidige sessie of notebook. Ze worden niet beïnvloed door het publiceren van de omgeving in de snelle modus of de volledige modus.

Overzicht van ondersteunde bibliotheektypen

Bibliotheektype Omgevingsbibliotheekbeheer Inline-installatie
Python Public (PyPI & Conda) Ondersteund Ondersteund
Python Custom (.whl) Ondersteund Ondersteund
R Public (CRAN) Niet ondersteund Ondersteund
Aangepast R-bestand (.tar.gz) Ondersteund als aangepaste bibliotheek Ondersteund
Pot Ondersteund als aangepaste bibliotheek Ondersteund

Inline-installatie

Met inlineopdrachten kunt u bibliotheken beheren binnen afzonderlijke notebooksessies.

Inline-installatie van Python

Het systeem start de Python-interpreter opnieuw op om bibliotheekwijzigingen toe te passen. Variabelen die zijn gedefinieerd voordat u de opdrachtcel uitvoert, gaan verloren. Plaats alle opdrachten voor het toevoegen, verwijderen of bijwerken van Python-pakketten aan het begin van uw notebook.

Inlineopdrachten voor het beheren van Python-bibliotheken zijn standaard uitgeschakeld in notebook-pijplijnuitvoeringen. Als u %pip install voor een pijplijn wilt inschakelen, voegt u _inlineInstallationEnabled toe als een Boolean-parameter ingesteld op True in de parameters van de notebookactiviteit.

Schermopname van de configuratie voor het inschakelen van pip-installatie bij de uitvoering van een notebook-pijplijn.

Notitie

De %pip install opdracht kan inconsistente resultaten produceren van uitvoering tot uitvoering. Installeer bibliotheken in een omgeving en gebruik die omgeving vervolgens in een pipeline. De %pip install opdracht wordt niet ondersteund in de modus Hoge gelijktijdigheid. In notebookreferentieuitvoeringen worden inlineopdrachten voor het beheren van Python-bibliotheken niet ondersteund. Verwijder deze inlineopdrachten uit het notitieblok waarnaar wordt verwezen om de juiste uitvoering te garanderen.

Gebruik %pip in plaats van !pip. De !pip opdracht is een ingebouwde IPython-shell-opdracht met de volgende beperkingen:

  • !pip installeert alleen een pakket op het stuurprogrammaknooppunt, niet op uitvoerknooppunten.
  • Pakketten die zijn geïnstalleerd via !pip , maken geen rekening met conflicten met ingebouwde pakketten of pakketten die al in een notebook zijn geïmporteerd.

%pip verwerkt deze scenario's. Bibliotheken die via %pip zijn geïnstalleerd, zijn beschikbaar op zowel driver- als uitvoerende knooppunten en hebben effect, zelfs als de bibliotheek al is geïmporteerd.

Aanbeveling

De %conda install opdracht duurt meestal langer dan de %pip install opdracht om nieuwe Python-bibliotheken te installeren. Hiermee worden de volledige afhankelijkheden gecontroleerd en conflicten opgelost.

Gebruik %conda install deze functie voor meer betrouwbaarheid en stabiliteit. Gebruik %pip install deze optie als u zeker weet dat de bibliotheek die u wilt installeren, geen conflict veroorzaakt met de vooraf geïnstalleerde bibliotheken in de runtime-omgeving.

Zie %pip-opdrachten en %conda-opdrachten voor alle beschikbare inlineopdrachten en verduidelijkingen van Python.

Openbare Python-bibliotheken beheren via inline-installatie

In dit voorbeeld ziet u hoe u inlineopdrachten gebruikt om bibliotheken te beheren. Stel je voor dat je altair, een krachtige visualisatiebibliotheek voor Python, wilt gebruiken voor een eenmalige gegevensverkenning en dat de bibliotheek niet in je werkruimte is geïnstalleerd. In het volgende voorbeeld worden conda-opdrachten gebruikt om de stappen te illustreren.

U kunt inline-opdrachten gebruiken om altair in te schakelen in uw notitieblok-sessie zonder invloed op andere sessies van het notitieblok of andere items.

  1. Voer de volgende opdrachten uit in een notebookcodecel. Met de eerste opdracht wordt de altair-bibliotheek geïnstalleerd. Installeer ook vega_datasets, dat een semantisch model bevat dat u kunt gebruiken om te visualiseren.

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

    De uitvoer van de cel geeft het resultaat van de installatie aan.

  2. Importeer het pakket en het semantische model door de volgende code uit te voeren in een andere notebookcel.

    import altair as alt
    from vega_datasets import data
    
  3. U kunt nu spelen met de bibliotheek met sessiebereik.

    # 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()
    

Aangepaste Python-bibliotheken beheren via inline-installatie

U kunt uw aangepaste Python-bibliotheken uploaden naar de map resources van uw notebook of de gekoppelde omgeving. De resources-map is een ingebouwd bestandssysteem dat standaard aanwezig is in elke notebook en omgeving. Zie Notebook-resources voor meer informatie. Nadat u een bibliotheek hebt geüpload, kunt u deze naar een codecel slepen en neerzetten om de installatieopdracht automatisch te genereren. U kunt ook de volgende opdracht uitvoeren:

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

Notitie

Aangepaste bibliotheken die zijn geïnstalleerd vanuit de map Resources via inlineopdrachten, zijn per sessie en per notebook. Ze worden niet beïnvloed door het publiceren in omgevingen.

R inline-installatie

Voor het beheren van R-bibliotheken ondersteunt Fabric de install.packages(), remove.packages()en devtools:: opdrachten. Zie de opdracht install.packages en remove.package voor alle beschikbare R inline-opdrachten en verduidelijkingen.

Openbare R-bibliotheken beheren via inline-installatie

Volg dit voorbeeld om de stappen voor het installeren van een openbare R-bibliotheek te doorlopen.

Een R-feedbibliotheek installeren:

  1. Schakel de werktaal over naar SparkR (R) op de notebookwerkbalk.

  2. Installeer de caesar-bibliotheek door de volgende opdracht uit te voeren in een notebookcel.

    install.packages("caesar")
    
  3. U kunt nu experimenteren met de sessiegerichte caesar-bibliotheek met een Spark-job.

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

Jar-bibliotheken beheren via inline-installatie

U kunt .jar bestanden toevoegen aan notebooksessies met de volgende opdracht.

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

In de voorgaande codecel wordt Lakehouse Storage gebruikt als voorbeeld. In de notebook explorer kunt u het volledige ABFS-pad van het bestand kopiëren en vervangen in de code. Schermopname van de menuopdrachten om het ABFS-pad op te halen.