Ř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.
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ů:
- Na kartě Monitorování přejděte do seznamu aplikací Sparku.
- Vyberte systémovou úlohu aplikace Sparku, která odpovídá vaší aktualizaci fondu. Tyto systémové úlohy se spouští pod názvem SystemReservedJob-LibraryManagement.
- Přepnutím zobrazíte protokoly ovladače a stdout.
- Ve výsledcích uvidíte protokoly související s instalací balíčků.
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ů:
- Na kartě Monitorování přejděte do seznamu aplikací Sparku.
- 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.
- Vyberte zvýrazněnou možnost serveru historie Sparku, která by otevřela stránku s podrobnostmi o serveru historie Sparku na nové kartě.
- Na této stránce uvidíte 2 pokusy, vyberte Pokus 1, jak je znázorněno níže.
- Na horním navigačním panelu na stránce serveru historie Sparku přepněte na kartu Exekutory .
- 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.
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í:
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.
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
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
- Zobrazení výchozích knihoven: Podpora verzí Apache Sparku