Udostępnij za pośrednictwem


Rozwiązywanie problemów z błędami instalacji bibliotek

Aby udostępnić aplikacjom kod innej firmy lub lokalny, możesz zainstalować bibliotekę na jednej z bezserwerowych pul zadań platformy Apache Spark. Pakiety wymienione w pliku requirements.txt są pobierane z repozytorium PyPi w momencie uruchomienia puli. Ten plik wymagań jest używany za każdym razem, gdy wystąpienie platformy Spark jest tworzone na podstawie tej puli zadań platformy Spark. Po zainstalowaniu biblioteki dla puli zadań platformy Spark jest ona dostępna dla wszystkich sesji korzystających z tej samej puli.

W niektórych przypadkach może się okazać, że biblioteka nie jest wyświetlana w puli zadań platformy Apache Spark. Ten przypadek występuje często, gdy w pliku requirements.txt lub w określonych bibliotekach jest błąd. Gdy błąd wystąpi w procesie instalacji biblioteki, pula zadań platformy Apache Spark przywróci biblioteki określone w podstawowym środowisku uruchomieniowym usługi Synapse.

Celem tego dokumentu jest opisanie typowych problemów i pomoc w debugowaniu błędów podczas instalowania bibliotek.

Wymuszanie aktualizacji puli zadań platformy Apache Spark

Po zaktualizowaniu bibliotek w puli zadań platformy Apache Spark zmiany zostaną pobrane po ponownym uruchomieniu puli. Jeśli masz aktywne zadania, zadania te będą nadal działać w oryginalnej wersji puli zadań platformy Spark.

Zmiany do zastosowania można wymusić, wybierając opcję Wymuś nowe ustawienia. To ustawienie spowoduje zakończenie wszystkich bieżących sesji dla wybranej puli zadań platformy Spark. Po zakończeniu sesji należy poczekać na ponowne uruchomienie puli.

Dodawanie bibliotek języka Python

Śledzenie postępu instalacji

Zarezerwowane w systemie zadanie platformy Spark jest uruchamiane zawsze podczas aktualizowania puli przy użyciu nowego zestawu bibliotek. To zadanie platformy Spark pomaga monitorować stan instalacji bibliotek. Jeśli instalacja zakończy się niepowodzeniem z powodu konfliktów bibliotek lub innych problemów, pula zadań platformy Spark powróci do poprzedniego lub domyślnego stanu.

Ponadto użytkownicy mogą również sprawdzać dzienniki instalacji, aby zidentyfikować konflikty zależności, lub sprawdzić, które biblioteki zostały zainstalowane podczas aktualizacji puli.

Aby wyświetlić te dzienniki:

  1. Przejdź do listy aplikacji platformy Spark na karcie Monitorowanie.
  2. Wybierz zadanie aplikacji platformy Spark systemu odpowiadające aktualizacji puli. Te zadania systemowe są uruchamiane jako SystemReservedJob-LibraryManagement. Zrzut ekranu przedstawiający zadanie biblioteki zarezerwowane w systemie.
  3. Przełącz się, aby wyświetlić dzienniki strumieni sterownika i stdout.
  4. W wynikach zobaczysz dzienniki związane z instalacją pakietów. Zrzut ekranu przedstawiający wyniki zadania biblioteki zarezerwowanego w systemie.

Śledzenie błędów instalacji

W niektórych przypadkach użytkownicy mogą również sprawdzić pełne dzienniki instalacji dostępne na serwerze historii platformy Spark, aby zidentyfikować złożone konflikty zależności. Dzienniki dostępne za pośrednictwem interfejsu użytkownika platformy Spark można obcinać i uzyskiwać dostęp do pełnych dzienników instalacji na serwerze historii platformy Spark, co może być przydatne w złożonych scenariuszach instalacji bibliotek.

Aby wyświetlić pełne dzienniki instalacji:

  1. Przejdź do listy aplikacji platformy Spark na karcie Monitorowanie.
  2. Wybierz zadanie aplikacji platformy Spark systemu odpowiadające aktualizacji puli zakończonej niepowodzeniem. Te zadania systemowe są uruchamiane jako SystemReservedJob-LibraryManagement. Zrzut ekranu przedstawiający zakończone niepowodzeniem zadanie biblioteki zarezerwowane w systemie.
  3. Wybierz wyróżnioną opcję Serwera historii platformy Spark, która otwiera stronę szczegółów serwera historii platformy Spark na nowej karcie. Zrzut ekranu przedstawiający szczegóły zakończonego niepowodzeniem zadania biblioteki zarezerwowanego w systemie.
  4. Na tej stronie można zobaczyć 2 próby. Wybierz pozycję Próba 1, jak pokazano poniżej. Zrzut ekranu przedstawiający szczegóły funkcji wykonawczej na stronie serwera historii platformy Spark dotyczące zakończonego niepowodzeniem zadania biblioteki zarezerwowanego w systemie.
  5. Na górnym pasku nawigacyjnym na stronie serwera historii platformy Spark przejdź do karty Funkcje wykonawcze . Zrzut ekranu przedstawiający szczegóły zadania na stronie serwera historii platformy Spark dotyczące zakończonego niepowodzeniem zadania biblioteki zarezerwowanego w systemie.
  6. Pobierz pliki dziennika strumieni stdout i stderr, aby uzyskać dostęp do pełnych danych wyjściowych zarządzania bibliotekami i dzienników błędów. Zrzut ekranu przedstawiający stronę serwera historii platformy Spark dotyczące zakończonego niepowodzeniem zadania biblioteki zarezerwowanego w systemie.

Weryfikowanie uprawnień

Aby zainstalować i zaktualizować biblioteki, musisz mieć uprawnienia Współautor danych obiektu blob usługi Storage lub Właściciel danych obiektu blob usługi Storage na podstawowym koncie usługi Azure Data Lake Storage Gen2 połączonym z obszarem roboczym usługi Azure Synapse Analytics.

Aby sprawdzić, czy masz te uprawnienia, możesz uruchomić następujący kod:

from pyspark.sql.types import StructType,StructField, StringType, IntegerType
data2 = [("James","Smith","Joe","4355","M",3000),
    ("Michael","Rose","Edward","40288","F",4000)
  ]

schema = StructType([ \
    StructField("firstname",StringType(),True), \
    StructField("middlename",StringType(),True), \
    StructField("lastname",StringType(),True), \
    StructField("id", StringType(), True), \
    StructField("gender", StringType(), True), \
    StructField("salary", IntegerType(), True) \
  ])
 
df = spark.createDataFrame(data=data2,schema=schema)

df.write.csv("abfss://<<ENTER NAME OF FILE SYSTEM>>@<<ENTER NAME OF PRIMARY STORAGE ACCOUNT>>.dfs.core.windows.net/validate_permissions.csv")

Jeśli wystąpi błąd, prawdopodobnie brakuje wymaganych uprawnień. Aby dowiedzieć się, jak uzyskać wymagane uprawnienia, odwiedź ten dokument: Przypisywanie współautora danych obiektu blob usługi Storage lub uprawnienia właściciela danych obiektu blob usługi Storage.

Ponadto, jeśli używasz potoku, tożsamość usługi zarządzanej obszaru roboczego musi mieć również uprawnienia Właściciel danych obiektu blob usługi Storage lub Współautor danych obiektu blob usługi Storage. Aby dowiedzieć się, jak udzielić tożsamości obszaru roboczego tego uprawnienia, odwiedź stronę: Udzielanie uprawnień tożsamości zarządzanej obszaru roboczego.

Sprawdzanie pliku konfiguracji środowiska

Plik konfiguracji środowiska może służyć do uaktualniania środowiska Conda. Te dopuszczalne formaty plików do zarządzania pulą języka Python są wymienione jako Specyfikacje środowiska.

Należy pamiętać o następujących ograniczeniach:

  • Zawartość pliku wymagań nie może zawierać dodatkowych pustych wierszy ani znaków.
  • Środowisko Uruchomieniowe usługi Synapse zawiera zestaw bibliotek, które są wstępnie zainstalowane w każdej bezserwerowej puli platformy Apache Spark. Nie można usunąć ani odinstalować pakietów wstępnie zainstalowanych w podstawowym środowisku uruchomieniowym.
  • Zmiana wersji PySpark, Python, Scala/Java, .NET lub Spark nie jest obsługiwana.
  • Biblioteki w zakresie sesji języka Python akceptują tylko pliki z rozszerzeniem YML.

Weryfikowanie plików koła

Bezserwerowe pule platformy Apache Spark usługi Synapse są oparte na dystrybucji systemu Linux. Podczas pobierania i instalowania plików Wheel bezpośrednio z interfejsu PyPI należy wybrać wersję utworzoną w systemie Linux i uruchamianą w tej samej wersji języka Python co pula spark.

Ważne

Pakiety niestandardowe można dodawać lub modyfikować między sesjami. Należy jednak poczekać na ponowne uruchomienie puli i sesji, aby zobaczyć zaktualizowany pakiet.

Sprawdzanie konfliktów zależności

Ogólnie rzecz biorąc rozwiązanie zależności języka Python może być trudne do zarządzania. Aby ułatwić lokalne debugowanie konfliktów zależności, możesz utworzyć własne środowisko wirtualne na podstawie środowiska uruchomieniowego usługi Synapse i zweryfikować zmiany.

Aby ponownie utworzyć środowisko i zweryfikować aktualizacje:

  1. Pobierz szablon, aby lokalnie utworzyć ponownie środowisko uruchomieniowe usługi Synapse. Mogą wystąpić niewielkie różnice między szablonem a rzeczywistym środowiskiem usługi Synapse.

  2. Utwórz środowisko wirtualne, korzystając z poniższych instrukcji. To środowisko umożliwia utworzenie izolowanej instalacji języka Python z określoną listą bibliotek.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. Użyj pip install -r <provide your req.txt file> polecenia , aby zaktualizować środowisko wirtualne przy użyciu określonych pakietów. Jeśli instalacja spowoduje wystąpienie błędu, może wystąpić konflikt między elementami wstępnie zainstalowanymi w podstawowym środowisku uruchomieniowym usługi Synapse i określonymi w podanym pliku wymagań. Te konflikty zależności należy rozwiązać, aby można było pobrać zaktualizowane biblioteki w bezserwerowej puli platformy Apache Spark.

Ważne

Problemy mogą wystąpić podczas używania narzędzia i conda razem. Podczas łączenia potoków i conda najlepiej jest postępować zgodnie z tymi zalecanymi najlepszymi rozwiązaniami.

Następne kroki