Delen via


Pakketten met sessiebereik beheren

Naast pakketten op groepsniveau kunt u ook bibliotheken met sessiebereik opgeven aan het begin van een notebooksessie. Met bibliotheken met sessiebereik kunt u Python-, JAR- en R-pakketten in een notebooksessie opgeven en gebruiken.

Wanneer u bibliotheken met sessiebereik gebruikt, is het belangrijk om rekening te houden met de volgende punten:

  • Wanneer u bibliotheken met sessiebereik installeert, heeft alleen het huidige notitieblok toegang tot de opgegeven bibliotheken.
  • Deze bibliotheken hebben geen invloed op andere sessies of taken met behulp van dezelfde Spark-pool.
  • Deze bibliotheken worden geïnstalleerd boven op de basisbibliotheken op runtime- en poolniveau en hebben de hoogste prioriteit.
  • Bibliotheken met sessiebereik blijven niet behouden tussen sessies.

Python-pakketten met sessiebereik

Python-pakketten met sessiebereik beheren via environment.yml-bestand

Python-pakketten met sessiebereik opgeven:

  1. Navigeer naar de geselecteerde Spark-pool en zorg ervoor dat u bibliotheken op sessieniveau hebt ingeschakeld. U kunt deze instelling inschakelen door naar het >tabblad Pakketten voor Apache Spark-pools>beheren te gaan.Schermopname van het inschakelen van sessiepakketten.
  2. Zodra de instelling van toepassing is, kunt u een notitieblok openen en sessiepakketten> configureren selecteren. Schermopname van het opgeven van sessiepakketten. Schermopname van het uploaden van een Yml-bestand.
  3. Hier kunt u een Conda environment.yml-bestand uploaden om pakketten binnen een sessie te installeren of bij te werken. De opgegeven bibliotheken zijn aanwezig zodra de sessie is gestart. Deze bibliotheken zijn niet meer beschikbaar nadat de sessie is beëindigd.

Python-pakketten met sessiebereik beheren via %pip- en %conda-opdrachten

U kunt de populaire opdrachten %pip en %conda gebruiken om extra bibliotheken van derden of uw aangepaste bibliotheken te installeren tijdens uw Apache Spark-notebooksessie. In deze sectie gebruiken we %pip-opdrachten om verschillende veelvoorkomende scenario's te demonstreren.

Notitie

  • U wordt aangeraden de opdrachten %pip en %conda in de eerste cel van uw notebook te plaatsen als u nieuwe bibliotheken wilt installeren. De Python-interpreter wordt opnieuw gestart nadat de bibliotheek op sessieniveau wordt beheerd om de wijzigingen effectief te maken.
  • Deze opdrachten voor het beheren van Python-bibliotheken worden uitgeschakeld bij het uitvoeren van pijplijntaken. Als u een pakket in een pijplijn wilt installeren, moet u gebruikmaken van de mogelijkheden voor bibliotheekbeheer op groepsniveau.
  • Python-bibliotheken met sessiebereik worden automatisch geïnstalleerd op zowel het stuurprogramma als de werkknooppunten.
  • De volgende %conda-opdrachten worden niet ondersteund: maken, opschonen, vergelijken, activeren, deactiveren, uitvoeren, pakket.
  • U kunt verwijzen naar %pip-opdrachten en %conda-opdrachten voor de volledige lijst met opdrachten.

Een pakket van derden installeren

U kunt eenvoudig een Python-bibliotheek installeren vanuit PyPI.

# Install vega_datasets
%pip install altair vega_datasets

Als u het installatieresultaat wilt controleren, kunt u de volgende code uitvoeren om vega_datasets te visualiseren

# Create a scatter plot
# Plot Miles per gallon against the horsepower across different region

import altair as alt
from vega_datasets import data

cars = data.cars()
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
).interactive()

Een wielpakket installeren vanuit een opslagaccount

Als u bibliotheek wilt installeren vanuit opslag, moet u koppelen aan uw opslagaccount door de volgende opdrachten uit te voeren.

from notebookutils import mssparkutils  
 
mssparkutils.fs.mount(  
    "abfss://<<file system>>@<<storage account>.dfs.core.windows.net",  
    "/<<path to wheel file>>",  
    {"linkedService":"<<storage name>>"}  
) 

En vervolgens kunt u de opdracht %pip installeren om het vereiste wielpakket te installeren

%pip install /<<path to wheel file>>/<<wheel package name>>.whl

Een andere versie van de ingebouwde bibliotheek installeren

U kunt de volgende opdracht gebruiken om te zien wat de ingebouwde versie van een bepaald pakket is. We gebruiken pandas als voorbeeld

%pip show pandas

Het resultaat is als het volgende logboek:

Name: pandas
Version: **1.2.3**
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
... ...

U kunt de volgende opdracht gebruiken om pandas over te schakelen naar een andere versie, bijvoorbeeld 1.2.4

%pip install pandas==1.2.4

Een bibliotheek met sessiebereik verwijderen

Als u een pakket wilt verwijderen dat op deze notebooksessie is geïnstalleerd, kunt u de volgende opdrachten raadplegen. U kunt de ingebouwde pakketten echter niet verwijderen.

%pip uninstall altair vega_datasets --yes

De opdracht %pip gebruiken om bibliotheken te installeren vanuit een requirement.txt-bestand

%pip install -r  /<<path to requirement file>>/requirements.txt

Java- of Scala-pakketten met sessiebereik

Als u java- of Scala-pakketten met sessiebereik wilt opgeven, kunt u de %%configure volgende optie gebruiken:

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<file system>>@<<storage account>.dfs.core.windows.net/<<path to JAR file>>",
    }
}

Notitie

  • U wordt aangeraden de %%-configuratie aan het begin van uw notebook uit te voeren. U kunt naar dit document verwijzen voor de volledige lijst met geldige parameters.

R-pakketten met sessiebereik (preview)

Azure Synapse Analytics-pools bevatten veel populaire R-bibliotheken. U kunt ook extra bibliotheken van derden installeren tijdens uw Apache Spark-notebooksessie.

Notitie

  • Deze opdrachten voor het beheren van R-bibliotheken worden uitgeschakeld bij het uitvoeren van pijplijntaken. Als u een pakket in een pijplijn wilt installeren, moet u gebruikmaken van de mogelijkheden voor bibliotheekbeheer op groepsniveau.
  • R-bibliotheken met sessiebereik worden automatisch geïnstalleerd op zowel het stuurprogramma als de werkknooppunten.

Een pakket installeren

U kunt eenvoudig een R-bibliotheek installeren vanuit CRAN.

# Install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

U kunt CRAN-momentopnamen ook gebruiken als de opslagplaats om ervoor te zorgen dat u elke keer dezelfde pakketversie downloadt.

install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Devtools gebruiken om pakketten te installeren

De devtools bibliotheek vereenvoudigt de ontwikkeling van pakketten om veelvoorkomende taken te versnellen. Deze bibliotheek wordt geïnstalleerd in de standaard Azure Synapse Analytics-runtime.

U kunt een devtools specifieke versie van een bibliotheek opgeven die u wilt installeren. Deze bibliotheken worden op alle knooppunten in het cluster geïnstalleerd.

# Install a specific version. 
install_version("caesar", version = "1.0.0") 

Op dezelfde manier kunt u rechtstreeks vanuit GitHub een bibliotheek installeren.

# Install a GitHub library. 

install_github("jtilly/matchingR") 

Momenteel worden de volgende devtools functies ondersteund in Azure Synapse Analytics:

Opdracht Beschrijving
install_github() Hiermee wordt een R-pakket vanuit GitHub geïnstalleerd
install_gitlab() Een R-pakket installeren vanuit GitLab
install_bitbucket() Hiermee wordt een R-pakket vanuit Bitbucket geïnstalleerd
install_url() Hiermee wordt een R-pakket van een willekeurige URL geïnstalleerd
install_git() Installaties vanuit een willekeurige Git-opslagplaats
install_local() Wordt geïnstalleerd vanuit een lokaal bestand op schijf
install_version() Installaties van een specifieke versie op CRAN

Geïnstalleerde bibliotheken weergeven

U kunt een query uitvoeren op alle bibliotheken die in uw sessie zijn geïnstalleerd met behulp van de library opdracht.

library()

U kunt de packageVersion functie gebruiken om de versie van de bibliotheek te controleren:

packageVersion("caesar")

Een R-pakket verwijderen uit een sessie

U kunt de detach functie gebruiken om een bibliotheek uit de naamruimte te verwijderen. Deze bibliotheken blijven op schijf totdat ze opnieuw worden geladen.

# detach a library

detach("package: caesar")

Als u een pakket met sessiebereik uit een notebook wilt verwijderen, gebruikt u de remove.packages() opdracht. Deze bibliotheekwijziging heeft geen invloed op andere sessies in hetzelfde cluster. Gebruikers kunnen ingebouwde bibliotheken van de standaard Azure Synapse Analytics-runtime niet verwijderen of verwijderen.

remove.packages("caesar")

Notitie

U kunt kernpakketten zoals SparkR, SparklyR of R niet verwijderen.

R-bibliotheken met sessiebereik en SparkR

Er zijn notebookbibliotheken beschikbaar voor SparkR-werkrollen.

install.packages("stringr")
library(SparkR)

str_length_function <- function(x) {
  library(stringr)
  str_length(x)
}

docs <- c("Wow, I really like the new light sabers!",
               "That book was excellent.",
               "R is a fantastic language.",
               "The service in this restaurant was miserable.",
               "This is neither positive or negative.")

spark.lapply(docs, str_length_function)

R-bibliotheken met sessiebereik en SparklyR

Met spark_apply() in SparklyR kunt u elk R-pakket in Spark gebruiken. Standaard wordt in sparklyr::spark_apply() het argument pakketten ingesteld op FALSE. Hiermee kopieert u bibliotheken in de huidige libPaths naar de werkrollen, zodat u ze op werkrollen kunt importeren en gebruiken. U kunt bijvoorbeeld het volgende uitvoeren om een met caesar versleuteld bericht te genereren met sparklyr::spark_apply():

install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

spark_version <- "3.2"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

apply_cases <- function(x) {
  library(caesar)
  caesar("hello world")
}
sdf_len(sc, 5) %>%
  spark_apply(apply_cases, packages=FALSE)

Volgende stappen