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

Aby udostępnić aplikacjom kod innej firmy lub lokalnie, możesz zainstalować bibliotekę na jednej z bezserwerowych pul platformy Apache Spark. Pakiety wymienione w pliku requirements.txt są pobierane z PyPi w momencie uruchamiania puli. Ten plik wymagań jest używany za każdym razem, gdy wystąpienie platformy Spark jest tworzone na podstawie tej puli spark. Po zainstalowaniu biblioteki dla puli 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 platformy Apache Spark. Ten przypadek występuje często, gdy występuje błąd w podanych requirements.txt lub określonych bibliotekach. Gdy wystąpi błąd w procesie instalacji biblioteki, pula platformy Apache Spark powróci do bibliotek określonych w podstawowym środowisku uruchomieniowym usługi Synapse.

Celem tego dokumentu jest zapewnienie typowych problemów i pomoc w debugowaniu błędów instalacji biblioteki.

Wymuszanie aktualizacji puli platformy Apache Spark

Po zaktualizowaniu bibliotek w puli platformy Apache Spark te zmiany zostaną odebrane po ponownym uruchomieniu puli. Jeśli masz aktywne zadania, te zadania będą nadal działać w oryginalnej wersji puli 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 Spark. Po zakończeniu sesji trzeba będzie poczekać na ponowne uruchomienie puli.

Dodawanie bibliotek języka Python — Dodawanie

Śledzenie postępu instalacji

Zadanie platformy Spark zarezerwowanego systemu jest uruchamiane za każdym razem, gdy pula jest aktualizowana przy użyciu nowego zestawu bibliotek. To zadanie platformy Spark pomaga monitorować stan instalacji biblioteki. Jeśli instalacja zakończy się niepowodzeniem z powodu konfliktów biblioteki lub innych problemów, pula 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ć następujące 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 w tytule SystemReservedJob-LibraryManagement . Zrzut ekranu przedstawiający zadanie biblioteki zarezerwowanej systemu.
  3. Przełącz się, aby wyświetlić dzienniki sterownika i stdout .
  4. W wynikach zobaczysz dzienniki związane z instalacją pakietów. Zrzut ekranu przedstawiający wyniki zadania biblioteki zarezerwowanej systemu.

Śledzenie niepowodzeń instalacji

W niektórych przypadkach użytkownicy mogą również sprawdzić pełne dzienniki instalacji dostępne na serwerze historii platformy Spark, aby zidentyfikować skomplikowane 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 za pośrednictwem serwera historii platformy Spark byłoby przydatne w złożonych scenariuszach instalacji biblioteki.

Aby wyświetlić pełne dzienniki instalacji:

  1. Przejdź do listy aplikacji platformy Spark na karcie Monitorowanie .
  2. Wybierz zadanie aplikacji platformy Spark systemu, które odpowiada aktualizacji puli, która zakończyła się niepowodzeniem. Te zadania systemowe są uruchamiane w tytule SystemReservedJob-LibraryManagement . Zrzut ekranu przedstawiający zadanie biblioteki zarezerwowanej systemu, które zakończyło się niepowodzeniem.
  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 zadania biblioteki zarezerwowanej systemu, którego nie można wykonać.
  4. Na tej stronie zobaczysz 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 dla zadania zarezerwowanej biblioteki zarezerwowanej systemu, które zakończyło się niepowodzeniem.
  5. Na górnym pasku nawigacyjnym na stronie serwera historii platformy Spark przejdź do karty Wykonawcy. Zrzut ekranu przedstawiający szczegóły zadania na stronie serwera historii platformy Spark dla zadania zarezerwowanej biblioteki systemu, którego dotyczy niepowodzenie.
  6. Pobierz pliki dziennika stdout i stderr , aby uzyskać dostęp do pełnych danych wyjściowych zarządzania biblioteką i dzienników błędów. Zrzut ekranu przedstawiający stronę serwera historii platformy Spark dla zadania zarezerwowanej biblioteki zarezerwowanej systemu.

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 Storage 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 w przypadku uruchamiania potoku tożsamość 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 to uprawnienie, odwiedź stronę: Udzielanie uprawnień do tożsamości zarządzanej obszaru roboczego.

Sprawdzanie pliku konfiguracji środowiska

Plik konfiguracji środowiska może służyć do uaktualniania środowiska Conda. Dopuszczalne formaty plików do zarządzania pulą języka Python są wyświetlane 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 na 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

Pule bezserwerowe 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 uruchamiać ją 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ązywanie zależności w języku 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. Służy pip install -r <provide your req.txt file> do aktualizowania środowiska wirtualnego przy użyciu określonych pakietów. Jeśli instalacja spowoduje błąd, może wystąpić konflikt między tym, co jest wstępnie zainstalowane w środowisku uruchomieniowym bazy usługi Synapse i co jest określone w podanym pliku wymagań. Te konflikty zależności należy rozwiązać, aby uzyskać zaktualizowane biblioteki w bezserwerowej puli platformy Apache Spark.

Ważne

Problemy mogą być arrise podczas korzystania z pip i conda razem. Podczas łączenia pip i conda najlepiej jest przestrzegać tych zalecanych najlepszych rozwiązań.

Następne kroki