Udostępnij za pośrednictwem


Zarządzanie bibliotekami dla platformy Apache Spark w usłudze Azure Synapse Analytics

Biblioteki udostępniają kod wielokrotnego użytku, który można uwzględnić w programach lub projektach platformy Apache Spark w usłudze Azure Synapse Analytics (Azure Synapse Spark).

Może być konieczne zaktualizowanie bezserwerowego środowiska puli platformy Apache Spark z różnych powodów. Na przykład można znaleźć następujące elementy:

  • Jedna z podstawowych zależności wydała nową wersję.
  • Potrzebujesz dodatkowego pakietu do trenowania modelu uczenia maszynowego lub przygotowywania danych.
  • Lepszy pakiet jest dostępny i nie potrzebujesz już starszego pakietu.
  • Twój zespół utworzył pakiet niestandardowy, który jest potrzebny w puli platformy Apache Spark.

Aby udostępnić aplikacjom kod innych firm lub lokalnie, zainstaluj bibliotekę w jednej z bezserwerowych pul platformy Apache Spark lub sesji notesu.

Omówienie poziomów pakietów

W usłudze Azure Synapse Analytics są zainstalowane trzy poziomy pakietów:

  • Ustawienie domyślne: Pakiety domyślne obejmują pełną instalację programu Anaconda oraz dodatkowe często używane biblioteki. Aby uzyskać pełną listę bibliotek, zobacz Obsługa wersji platformy Apache Spark.

    Po uruchomieniu wystąpienia platformy Spark te biblioteki są dołączane automatycznie. Możesz dodać więcej pakietów na innych poziomach.

  • Pula platformy Spark: wszystkie uruchomione artefakty mogą używać pakietów na poziomie puli platformy Spark. Możesz na przykład dołączyć notes i definicje zadań platformy Spark do odpowiednich pul platformy Spark.

    Możesz przekazać biblioteki niestandardowe i określoną wersję biblioteki typu open source, której chcesz użyć w obszarze roboczym usługi Azure Synapse Analytics. Pakiety obszarów roboczych można zainstalować w pulach platformy Spark.

  • Sesja: Instalacja na poziomie sesji tworzy środowisko dla określonej sesji notesu. Zmiana bibliotek na poziomie sesji nie jest utrwalana między sesjami.

Uwaga

  • Zarządzanie bibliotekami na poziomie puli może zająć trochę czasu, w zależności od rozmiaru pakietów i złożoności wymaganych zależności, maksymalny czas aktualizacji jest ustawiony na 50 minut. Zadanie zarządzania biblioteką na poziomie puli zostanie anulowane automatycznie, jeśli przekroczy górny limit 50 minut. Zalecamy instalację na poziomie sesji w scenariuszach eksperymentalnych i szybszych iteracyjnych.
  • Zarządzanie bibliotekami na poziomie puli spowoduje utworzenie stabilnej zależności na potrzeby uruchamiania notesów i definicji zadań platformy Spark. Zainstalowanie biblioteki w puli Platformy Spark jest zdecydowanie zalecane w przypadku przebiegów potoków.
  • Zarządzanie bibliotekami na poziomie sesji może ułatwić szybkie iterację lub częste zmiany biblioteki. Jednak stabilność instalacji na poziomie sesji nie jest obiecana. Ponadto polecenia w wierszu, takie jak %i %conda, są wyłączone w przebiegu potoku. Zarządzanie biblioteką w sesji notesu jest zalecane w fazie opracowywania.

Zarządzanie pakietami obszarów roboczych

Gdy zespół opracowuje niestandardowe aplikacje lub modele, możesz tworzyć różne artefakty kodu, takie jak .whl, .jar lub pliki .tar.gz, aby spakować kod.

Ważne

  • tar.gz jest obsługiwana tylko w przypadku języka R. Użyj pliku .whl jako pakietu niestandardowego języka Python.

W usłudze Azure Synapse pakiety obszarów roboczych mogą być plikami niestandardowymi lub prywatnymi .whl lub .jar. Możesz przekazać te pakiety do obszaru roboczego, a później przypisać je do określonej bezserwerowej puli platformy Apache Spark. Po przypisaniu tych pakietów obszarów roboczych są one instalowane automatycznie we wszystkich sesjach puli platformy Spark.

Aby dowiedzieć się więcej na temat zarządzania bibliotekami obszarów roboczych, zobacz Zarządzanie pakietami obszarów roboczych.

Zarządzanie pakietami puli

W niektórych przypadkach może być konieczne standaryzację pakietów używanych w puli platformy Apache Spark. Ta standaryzacja może być przydatna, jeśli wiele osób w zespole często instaluje te same pakiety.

Korzystając z funkcji zarządzania pulą usługi Azure Synapse Analytics, można skonfigurować domyślny zestaw bibliotek do zainstalowania w bezserwerowej puli platformy Apache Spark. Te biblioteki są instalowane na podstawie podstawowego środowiska uruchomieniowego.

W przypadku bibliotek języka Python pule platformy Azure Synapse Spark używają platformy Conda do instalowania zależności pakietów języka Python i zarządzania nimi. Biblioteki języka Python na poziomie puli można określić, podając plik requirements.txt lub environment.yml . Ten plik konfiguracji środowiska jest używany za każdym razem, gdy wystąpienie platformy Spark jest tworzone na podstawie tej puli platformy Spark. Pakiety obszarów roboczych można również dołączyć do pul.

Aby dowiedzieć się więcej o tych możliwościach, zobacz Zarządzanie pakietami puli spark.

Ważne

  • Jeśli instalowany pakiet jest duży lub trwa długo, może to mieć wpływ na czas uruchamiania wystąpienia platformy Spark.
  • Zmiana wersji PySpark, Python, Scala/Java, .NET lub Spark nie jest obsługiwana.

Zarządzanie zależnościami dla pul platformy Spark z obsługą programu DEP

Uwaga

Instalowanie pakietów z publicznego repozytorium nie jest obsługiwane w obszarach roboczych z obsługą programu DEP. Zamiast tego przekaż wszystkie zależności jako biblioteki obszarów roboczych i zainstaluj je w puli platformy Spark.

Jeśli masz problemy z identyfikowaniem wymaganych zależności, wykonaj następujące kroki:

  1. Uruchom następujący skrypt, aby skonfigurować lokalne środowisko języka Python, które jest takie samo jak środowisko usługi Azure Synapse Spark. Ten skrypt wymaga pliku YAML zawierającego listę wszystkich bibliotek zawartych w domyślnym środowisku języka Python dla usługi Azure Synapse Spark. Ten plik YAML można znaleźć w dokumentacji dla określonych wersji środowiska uruchomieniowego, takich jak Apache Spark 3.2 (ogłoszony koniec wsparcia) i 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. Uruchom następujący skrypt, aby zidentyfikować wymagane zależności. Skrypt może służyć do przekazywania pliku requirements.txt zawierającego wszystkie pakiety i wersje, które mają zostać zainstalowane w puli Spark 3.1 lub Spark 3.2. Spowoduje to wydrukowanie nazw nowych plików kołowych/zależności dla wymagań dotyczących biblioteki wejściowej.

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

    Uwaga

    Ten skrypt wyświetli listę tylko zależności, które nie są jeszcze obecne w puli Spark domyślnie.

Zarządzanie pakietami w zakresie sesji

Podczas wykonywania interaktywnej analizy danych lub uczenia maszynowego możesz wypróbować nowsze pakiety lub mogą być potrzebne pakiety, które są obecnie niedostępne w puli platformy Apache Spark. Zamiast aktualizować konfigurację puli, można użyć pakietów o zakresie sesji, aby dodawać zależności sesji, zarządzać nimi i aktualizować je.

Pakiety o zakresie sesji umożliwiają użytkownikom definiowanie zależności pakietów na początku sesji. Podczas instalowania pakietu o zakresie sesji tylko bieżąca sesja ma dostęp do określonych pakietów. W związku z tym te pakiety o zakresie sesji nie mają wpływu na inne sesje ani zadania korzystające z tej samej puli platformy Apache Spark. Ponadto te biblioteki są instalowane na podstawie podstawowego środowiska uruchomieniowego i pakietów na poziomie puli.

Aby dowiedzieć się więcej na temat zarządzania pakietami o zakresie sesji, zobacz następujące artykuły:

  • Pakiety sesji języka Python: na początku sesji podaj plik environment.yml Conda, aby zainstalować więcej pakietów języka Python z popularnych repozytoriów. Możesz też użyć %pip poleceń i %conda do zarządzania bibliotekami w komórkach kodu notesu.

    Ważne

    Nie używaj polecenia , aby wypróbować i zainstalować biblioteki za pomocą %%sh narzędzia lub conda. Zachowanie nie jest takie samo jak %lub %conda.

  • Pakiety sesji języka Scala/Java: na początku sesji podaj listę plików .jar do zainstalowania przy użyciu polecenia %%configure.

  • Pakiety sesji języka R: w ramach sesji można instalować pakiety we wszystkich węzłach w puli Platformy Spark przy użyciu polecenia install.packages lub devtools.

Automatyzowanie procesu zarządzania biblioteką za pomocą poleceń cmdlet programu Azure PowerShell i interfejsów API REST

Jeśli Twój zespół chce zarządzać bibliotekami bez odwiedzania interfejsów użytkownika zarządzania pakietami, możesz zarządzać pakietami obszarów roboczych i aktualizacjami pakietów na poziomie puli za pomocą poleceń cmdlet programu Azure PowerShell lub interfejsów API REST dla usługi Azure Synapse Analytics.

Aby uzyskać więcej informacji, zobacz następujące artykuły: