Sdílet prostřednictvím


Řešení chyb instalace knihovny

Pokud chcete svým aplikacím zpřístupnit kód třetí strany nebo místně sestavený kód, můžete nainstalovat knihovnu do jednoho z bezserverových fondů úloh Apache Sparku. Balíčky uvedené v souboru requirements.txt se stáhnou z PyPi při spuštění fondu. Tento soubor požadavků se použije při každém vytvoření instance Sparku z tohoto fondu úloh Sparku. Jakmile je nainstalována knihovna pro fond úloh Sparku, je dostupná pro všechny relace používající stejný fond.

V některých případech můžete zjistit, že se knihovna ve vašem fondu úloh Apache Sparku nezobrazuje. K této situaci často dochází v případě, že v zadaném souboru requirements.txt nebo zadaných knihovnách dojde k chybě. Pokud v procesu instalace knihovny dojde k chybě, fond úloh Apache Sparku se vrátí ke knihovnám zadaným v modulu runtime báze Synapse.

Cílem tohoto dokumentu je poskytnout běžné problémy a pomoct s laděním chyb instalace knihovny.

Vynutit aktualizaci fondu úloh Apache Sparku

Když aktualizujete knihovny ve fondu úloh Apache Sparku, tyto změny se po restartování fondu převezmou. Pokud máte aktivní úlohy, budou tyto úlohy dál běžet v původní verzi fondu úloh Sparku.

Použití změn můžete vynutit tak, že vyberete možnost Vynutit nová nastavení. Toto nastavení ukončí všechny aktuální relace pro vybraný fond úloh Sparku. Po ukončení relací budete muset počkat, až se fond restartuje.

Přidat knihovny Pythonu

Sledovat průběh instalace

Úloha Sparku rezervovaná systémem se spustí pokaždé, když se fond aktualizuje novou sadou knihoven. Tato úloha Sparku pomáhá monitorovat stav instalace knihovny. Pokud instalace selže kvůli konfliktům knihoven nebo jiným problémům, fond úloh Sparku se vrátí do předchozího nebo výchozího stavu.

Kromě toho můžou uživatelé také zkontrolovat protokoly instalace a identifikovat konflikty závislostí nebo zjistit, které knihovny byly nainstalovány během aktualizace fondu.

Zobrazení těchto protokolů:

  1. Na kartě Monitorování přejděte do seznamu aplikací Sparku.
  2. Vyberte systémovou úlohu aplikace Sparku, která odpovídá vaší aktualizaci fondu. Tyto systémové úlohy se spouští pod názvem SystemReservedJob-LibraryManagement. Snímek obrazovky se zvýrazněnou systémovou úlohou rezervované knihovny
  3. Přepnutím zobrazíte protokoly ovladače a stdout.
  4. Ve výsledcích uvidíte protokoly související s instalací balíčků. Snímek obrazovky se zvýrazněnými výsledky systémové úlohy rezervované knihovny

Sledování chyb instalace

V některých případech můžou uživatelé také zkontrolovat úplné instalační protokoly dostupné na serveru historie Sparku a identifikovat složité konflikty závislostí. Protokoly dostupné prostřednictvím uživatelského rozhraní Sparku by mohly být zkráceny a přístup k úplným instalačním protokolům prostřednictvím serveru historie Sparku by byl užitečný při složitých scénářích instalace knihoven.

Zobrazení úplných instalačních protokolů:

  1. Na kartě Monitorování přejděte do seznamu aplikací Sparku.
  2. Vyberte systémovou úlohu aplikace Sparku, která odpovídá neúspěšné aktualizaci fondu. Tyto systémové úlohy se spouští pod názvem SystemReservedJob-LibraryManagement. Snímek obrazovky se zvýrazněnou neúspěšnou systémovou úlohou rezervované knihovny
  3. Vyberte zvýrazněnou možnost serveru historie Sparku, která by otevřela stránku s podrobnostmi o serveru historie Sparku na nové kartě. Snímek obrazovky se zvýrazněnými podrobnostmi o neúspěšné systémové úloze rezervované knihovny
  4. Na této stránce uvidíte 2 pokusy, vyberte Pokus 1, jak je znázorněno níže. Snímek obrazovky se zvýrazněnými podrobnostmi o exekutoru na stránce serveru historie Sparku pro neúspěšnou systémovou úlohu rezervované knihovny
  5. Na horním navigačním panelu na stránce serveru historie Sparku přepněte na kartu Exekutory . Snímek obrazovky se zvýrazněnými podrobnostmi o úloze na stránce serveru historie Sparku pro neúspěšnou systémovou úlohu rezervované knihovny
  6. Stáhněte si soubory protokolů stdout a stderr, abyste získali přístup k úplnému výstupu správy knihovny a protokolům chyb. Snímek obrazovky se zvýrazněnou stránkou serveru historie Sparku pro neúspěšnou systémovou úlohu rezervované knihovny

Ověření oprávnění

Pokud chcete nainstalovat a aktualizovat knihovny, musíte mít oprávnění Přispěvatel dat objektů blob služby Storage nebo Vlastník dat objektů blob služby Storage v primárním účtu Azure Data Lake Storage Gen2, který je propojený s pracovním prostorem Azure Synapse Analytics.

Pokud chcete ověřit, že máte tato oprávnění, můžete spustit následující kód:

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")

Pokud se zobrazí chyba, pravděpodobně chybí požadovaná oprávnění. Informace o získání požadovaných oprávnění najdete v tomto dokumentu: Přiřazení oprávnění Přispěvatel dat objektů blob služby Storage nebo Vlastník dat objektů blob služby Storage.

Pokud navíc spouštíte kanál, musí mít MSI pracovního prostoru také oprávnění vlastníka dat objektů blob úložiště nebo přispěvatele dat objektů blob úložiště. Informace o udělení identity pracovního prostoru najdete v tématu: Udělení oprávnění spravované identitě pracovního prostoru.

Kontrola konfiguračního souboru prostředí

Konfigurační soubor prostředí lze použít k upgradu prostředí Conda. Tyto přijatelné formáty souborů pro správu fondu Pythonu jsou uvedeny jako specifikace prostředí.

Je důležité si uvědomit následující omezení:

  • Obsah souboru požadavků nesmí obsahovat nadbytečné prázdné řádky nebo znaky.
  • Modul Runtime Synapse zahrnuje sadu knihoven, které jsou předinstalované do každého bezserverového fondu Apache Spark. Balíčky, které jsou předinstalované do základního modulu runtime, nelze odebrat ani odinstalovat.
  • Změna verze PySpark, Python, Scala/Java, .NET nebo Spark se nepodporuje.
  • Knihovny v rozsahu relace Pythonu přijímají pouze soubory s příponou YML.

Ověření souborů kolečka

Bezserverové fondy Apache Sparku Synapse jsou založené na distribuci Linuxu. Při stahování a instalaci souborů Wheel přímo z PyPI nezapomeňte vybrat verzi, která je založená na Linuxu, a běžet na stejné verzi Pythonu jako fond Spark.

Důležité

Mezi relacemi je možné přidat nebo upravit vlastní balíčky. Budete ale muset počkat na restartování fondu a relace, abyste viděli aktualizovaný balíček.

Kontrola konfliktů závislostí

Obecně platí, že řešení závislostí Pythonu může být obtížné spravovat. Abyste mohli ladit konflikty závislostí místně, můžete vytvořit vlastní virtuální prostředí založené na modulu Synapse Runtime a ověřit změny.

Opětovné vytvoření prostředí a ověření aktualizací:

  1. Stáhněte si šablonu pro místní opětovné vytvoření modulu runtime Synapse. Mezi šablonou a skutečným prostředím Synapse se můžou mírně lišit.

  2. Pomocí následujících pokynů vytvořte virtuální prostředí. Toto prostředí umožňuje vytvořit izolovanou instalaci Pythonu se zadaným seznamem knihoven.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. Slouží pip install -r <provide your req.txt file> k aktualizaci virtuálního prostředí pomocí zadaných balíčků. Pokud instalace způsobí chybu, může dojít ke konfliktu mezi tím, co je předinstalované v základním modulu runtime Synapse a co je zadané v zadaném souboru požadavků. Tyto konflikty závislostí je potřeba vyřešit, aby se aktualizované knihovny dostaly do bezserverového fondu Apache Sparku.

Důležité

Při společném používání pipu a conda můžou nastat problémy. Při kombinování pipu a Conda je nejlepší postupovat podle těchto doporučených osvědčených postupů.

Další kroky