Zarządzanie bibliotekami platformy Apache Spark w usłudze Microsoft Fabric

Biblioteka to kolekcja wstępnie napisanego kodu, który deweloperzy mogą importować w celu zapewnienia funkcjonalności. Korzystając z bibliotek, możesz zaoszczędzić czas i nakład pracy, nie trzeba pisać kodu od podstaw w celu wykonywania typowych zadań. Zamiast tego zaimportuj bibliotekę i użyj jej funkcji i klas, aby osiągnąć żądane funkcje. Usługa Microsoft Fabric udostępnia wiele mechanizmów, które ułatwiają zarządzanie bibliotekami i korzystanie z nich.

  • Wbudowane biblioteki: każde środowisko uruchomieniowe platformy Spark sieci szkieletowej udostępnia bogaty zestaw popularnych wstępnie zainstalowanych bibliotek. Pełną listę wbudowanych bibliotek można znaleźć w środowisku Fabric Spark Runtime.
  • Biblioteki publiczne: biblioteki publiczne pochodzą z repozytoriów, takich jak PyPI i Conda, które są obecnie obsługiwane.
  • Biblioteki niestandardowe: biblioteki niestandardowe odwołują się do kodu utworzonego przez Ciebie lub Organizację. Sieć szkieletowa obsługuje je w formatach .whl, .jar i .tar.gz . Sieć szkieletowa obsługuje .tar.gz tylko dla języka R. W przypadku bibliotek niestandardowych języka Python użyj formatu .whl .

Zarządzanie biblioteką w ustawieniu obszaru roboczego

Ważne

Zarządzanie biblioteką w ustawieniu obszaru roboczego nie jest już obsługiwane. Aby przeprowadzić migrację bibliotek obszarów roboczych i właściwości platformy Spark do środowiska domyślnego, zobacz Migrowanie bibliotek obszarów roboczych i właściwości platformy Spark.

Podsumowanie najlepszych rozwiązań dotyczących zarządzania bibliotekami

W poniższych scenariuszach opisano najlepsze rozwiązania.

Scenariusz 1: Administracja ustawia biblioteki domyślne dla obszaru roboczego

Aby ustawić biblioteki domyślne, musisz być administratorem obszaru roboczego. Jako administrator możesz wykonywać następujące zadania:

  1. Utwórz nowe środowisko
  2. Instalowanie wymaganych bibliotek w środowisku
  3. Dołączanie tego środowiska jako domyślnego obszaru roboczego

Notesy i definicje zadań platformy Spark w obszarze roboczym są dołączone do ustawień obszaru roboczego. Rozpoczynają sesje z bibliotekami zainstalowanymi w domyślnym środowisku obszaru roboczego.

Scenariusz 2. Utrwalanie specyfikacji biblioteki dla jednego lub wielu elementów kodu

Jeśli chcesz zachować specyfikacje biblioteki, zainstaluj biblioteki w środowisku i dołącz je do elementów kodu.

Jedną z zalet tego podejścia jest to, że oszczędza nakład pracy na uruchamianiu kodu, który wymaga wspólnych bibliotek przez cały czas. Po pomyślnym zainstalowaniu w środowisku biblioteki są skuteczne we wszystkich sesjach platformy Spark, jeśli środowisko jest dołączone.

Kolejną korzyścią jest to, że podejście obsługuje stopień szczegółowości konfiguracji biblioteki niższy niż poziom obszaru roboczego. Jedno środowisko można dołączyć do wielu artefaktów kodu. Jeśli masz podzbiór notesów lub definicji zadań platformy Spark w jednym obszarze roboczym, który wymaga tych samych bibliotek, dołącz je do tego samego środowiska. Administrator, członek lub współautor obszaru roboczego może tworzyć, edytować i dołączać środowisko.

Scenariusz 3. Instalacja śródliniowa w interakcyjnym przebiegu

Jeśli interesuje Cię jednorazowe użycie, w notesie interaktywnym biblioteki, która nie jest zainstalowana, instalacja śródliniowa jest najbardziej wygodną opcją. Wbudowane polecenia w usłudze Fabric umożliwiają efektywne korzystanie z biblioteki w bieżącej sesji platformy Spark notesu. Biblioteka nie jest utrwalana w różnych sesjach.

Użytkownicy, którzy mają uprawnienia do uruchamiania notesu, mogą instalować inne biblioteki w sesji platformy Spark.

Podsumowanie obsługiwanych typów bibliotek

Typ biblioteki Zarządzanie biblioteką środowisk Instalacja śródliniowa
Publiczny język Python (PyPI i Conda) Obsługiwane Obsługiwane
Python Custom (.whl) Obsługiwane Obsługiwane
R Public (CRAN) Nieobsługiwane Obsługiwane
Niestandardowy język R (.tar.gz) Obsługiwane Obsługiwane
Jar Obsługiwana jako biblioteka niestandardowa Nieobsługiwane

Ważne

Obecnie istnieją ograniczenia dotyczące biblioteki .jar .

  • W przypadku użytkowników języka Scala plik .jar może zostać pomyślnie zainstalowany w środowisku, ale nie jest skuteczny w przypadku sesji platformy Spark/Scala. Instalacja zastępuje wbudowaną bibliotekę za pomocą innej biblioteki. Nowe .jar działa w sesjach.
  • W przypadku użytkowników języka Python wszystkie pliki .jar nie są obecnie obsługiwane w środowisku. Mogą one zostać pomyślnie zainstalowane w środowisku, ale nie są skuteczne w sesjach PySpark.
  • Zamiast tego można zainstalować pliki .jar na poziomie sesji notesu.

Instalacja śródliniowa

Wbudowane polecenia obsługują biblioteki języka Python i biblioteki języka R.

Instalacja śródliniowa języka Python

Interpreter języka Python uruchamia się ponownie, aby zastosować zmianę bibliotek. Wszystkie zmienne zdefiniowane przed uruchomieniem komórki poleceń zostaną utracone. Zdecydowanie zalecamy umieszczenie wszystkich poleceń do dodawania, usuwania lub aktualizowania pakietów języka Python na początku notesu.

Polecenia wbudowane do zarządzania bibliotekami języka Python są domyślnie wyłączone w potoku notesu. Jeśli chcesz włączyć %pip install dla potoku, dodaj parametr "_inlineInstallationEnabled", ponieważ parametr logiczny ma wartość True w parametrach działania notesu.

Zrzut ekranu przedstawiający konfigurację włączania instalacji potoku pip dla uruchomienia potoku notesu.

Uwaga

Może %pip install to prowadzić do niespójnych wyników od czasu do czasu. Zaleca się zainstalowanie biblioteki w środowisku i użycie jej w potoku.

Zalecamy %pip zamiast !pip. !pip to wbudowane polecenie powłoki IPython, które ma następujące ograniczenia:

  • !pip Instaluje tylko pakiet w węźle sterownika, a nie węzłów funkcji wykonawczej.
  • Pakiety instalowane za pomocą !pip programu nie mają wpływu na konflikty z wbudowanymi pakietami lub czy pakiety są już importowane w notesie.

%pip Obsługuje jednak te scenariusze. Biblioteki zainstalowane za pomocą %pip programu są dostępne zarówno w węzłach sterownika, jak i funkcji wykonawczej, a nawet biblioteka jest już importowana.

Napiwek

Polecenie %conda install zwykle trwa dłużej niż %pip install polecenie, aby zainstalować nowe biblioteki języka Python. Sprawdza pełne zależności i rozwiązuje konflikty.

Możesz chcieć użyć %conda install w celu zwiększenia niezawodności i stabilności. Jeśli masz pewność %pip install , że biblioteka, którą chcesz zainstalować, nie powoduje konfliktu ze wstępnie zainstalowanymi bibliotekami w środowisku uruchomieniowym.

Aby uzyskać wszystkie dostępne polecenia i wyjaśnienia języka Python, zobacz %pip polecenia i polecenia %conda.

Zarządzanie bibliotekami publicznymi języka Python za pomocą instalacji wbudowanej

W tym przykładzie zobacz, jak zarządzać bibliotekami za pomocą poleceń wbudowanych. Załóżmy, że chcesz użyć altair, zaawansowanej biblioteki wizualizacji dla języka Python na potrzeby jednorazowej eksploracji danych. Załóżmy, że biblioteka nie jest zainstalowana w obszarze roboczym. W poniższym przykładzie użyto poleceń conda, aby zilustrować kroki.

Możesz użyć wbudowanych poleceń, aby włączyć altair w sesji notesu bez wpływu na inne sesje notesu lub innych elementów.

  1. Uruchom następujące polecenia w komórce kodu notesu. Pierwsze polecenie instaluje bibliotekę altair . Ponadto zainstaluj vega_datasets, która zawiera semantyczny model, którego można użyć do wizualizacji.

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

    Dane wyjściowe komórki wskazują wynik instalacji.

  2. Zaimportuj pakiet i model semantyczny, uruchamiając następujący kod w innej komórce notesu.

    import altair as alt
    from vega_datasets import data
    
  3. Teraz możesz grać z biblioteką altair o zakresie sesji.

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

Zarządzanie bibliotekami niestandardowymi języka Python za pomocą instalacji wbudowanej

Biblioteki niestandardowe języka Python można przekazać do folderu File (Plik ) magazynu lakehouse dołączonego do notesu. Przejdź do usługi Lakehouse, wybierz ikonę ... w folderze Plik i przekaż bibliotekę niestandardową.

Po przekazaniu użyj następującego polecenia, aby zainstalować bibliotekę niestandardową w sesji notesu.

# install the .whl through pip command
%pip install /lakehouse/default/Files/wheel_file_name.whl             

Instalacja śródliniowa języka R

Aby zarządzać bibliotekami języka R, usługa Fabric obsługuje install.packages()polecenia , remove.packages()i devtools:: . Aby uzyskać wszystkie dostępne polecenia wbudowane języka R i wyjaśnienia, zobacz polecenie install.packages i polecenie remove.package.

Zarządzanie bibliotekami publicznymi języka R za pośrednictwem instalacji wbudowanej

Postępuj zgodnie z tym przykładem, aby zapoznać się z krokami instalowania publicznej biblioteki języka R.

Aby zainstalować bibliotekę kanału informacyjnego języka R:

  1. Przełącz język roboczy na platformę SparkR (R) na wstążce notesu.

  2. Zainstaluj bibliotekę caesar , uruchamiając następujące polecenie w komórce notesu.

    install.packages("caesar")
    
  3. Teraz możesz obejść się z biblioteką cezarów w zakresie sesji za pomocą zadania spark.

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

Zarządzanie bibliotekami Jar za pomocą instalacji wbudowanej

Pliki .jar są obsługiwane podczas sesji notesu za pomocą następującego polecenia.

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

Komórka kodu używa magazynu usługi Lakehouse jako przykładu. W Eksploratorze notesów możesz skopiować pełną ścieżkę ABFS pliku i zastąpić go w kodzie. Zrzut ekranu przedstawiający pobieranie ścieżki ABFS.