Bibliotheekinstallatiefouten oplossen
Als u code van derden of lokaal gebouwde code beschikbaar wilt maken voor uw toepassingen, kunt u een bibliotheek installeren in een van uw serverloze Apache Spark-pools. De pakketten die in het bestand requirements.txt worden vermeld, zijn van PyPi gedownload op het moment dat de pool werd opgestart. Dit bestand met vereisten wordt gebruikt telkens wanneer er een Apache Spark-exemplaar wordt gemaakt op basis van die Spark-pool. Zodra een bibliotheek is geïnstalleerd voor een Spark-pool, is deze beschikbaar voor alle sessies die dezelfde pool gebruiken.
In sommige gevallen wordt een bibliotheek niet weergegeven in uw Apache Spark-pool. Dit is vaak het geval als er een fout is in het geleverde bestand requirements.txt of in de opgegeven bibliotheken. Wanneer er een fout optreedt tijdens het bibliotheekinstallatieproces, wordt de Apache Spark-pool hersteld naar bibliotheken die zijn opgegeven in de Synapse-basisruntime.
Het doel van dit document is om veelvoorkomende problemen aan te geven en u te helpen bij het opsporen van fouten bij de installatie van bibliotheken.
Uw Apache Spark-pool geforceerd bijwerken
Wanneer u de bibliotheken in uw Apache Spark-pool bijwerkt, worden deze wijzigingen doorgevoerd zodra de pool opnieuw is opgestart. Als u actieve taken hebt, worden deze taken nog steeds uitgevoerd in de oorspronkelijke versie van de Spark-pool.
U kunt afdwingen dat de wijzigingen worden toegepast door de optie Nieuwe instellingen afdwingen te selecteren. Met deze instelling worden alle huidige sessies voor de geselecteerde Spark-pool beëindigd. Zodra de sessies zijn beëindigd, moet u wachten tot de pool opnieuw is opgestart.
De installatievoortgang bijhouden
Een door het systeem gereserveerde Apache Spark-taak wordt gestart telkens wanneer een pool wordt bijgewerkt met een nieuwe set bibliotheken. Met deze Apache Spark-taak kunt u de status van de bibliotheekinstallatie bewaken. Als de installatie mislukt vanwege bibliotheekconflicten of andere problemen, wordt de Spark-pool hersteld naar de vorige of standaardstatus.
Daarnaast kunnen gebruikers ook de installatielogboeken inspecteren om afhankelijkheidsconflicten te identificeren of te zien welke bibliotheken tijdens de poolupdate zijn geïnstalleerd.
Ga als volgt te werk om deze logboeken weer te geven:
- Navigeer naar de lijst met Apache Spark-toepassingen op het tabblad Bewaken.
- Selecteer de Apache Spark-systeemtoepassingstaak die overeenkomt met uw poolupdate. Deze systeemtaken worden uitgevoerd onder de titel SystemReservedJob-LibraryManagement.
- Schakel om de stuurprogramma- en stdout-logboeken weer te geven.
- In de resultaten ziet u de logboeken met betrekking tot de installatie van uw pakketten.
Installatiefouten bijhouden
In bepaalde gevallen kunnen gebruikers ook de volledige installatielogboeken controleren die beschikbaar zijn op de Apache Spark History Server om complexe afhankelijkheidsconflicten te identificeren. De logboeken die beschikbaar zijn via de Spark-gebruikersinterface zijn mogelijk afgekapt en het openen van de volledige installatielogboeken via de Apache Spark History Server kan handig zijn in complexe bibliotheekinstallatiescenario's.
De volledige installatielogboeken weergeven:
- Navigeer naar de lijst met Apache Spark-toepassingen op het tabblad Bewaken.
- Selecteer de Apache Spark-systeemtoepassingstaak die overeenkomt met de mislukte poolupdate. Deze systeemtaken worden uitgevoerd onder de titel SystemReservedJob-LibraryManagement.
- Selecteer de gemarkeerde optie voor de Spark-geschiedenisgeschiedenisserver waarmee de pagina met details van de Spark-geschiedenisserver op een nieuw tabblad wordt geopend.
- Op deze pagina ziet u 2 pogingen. Selecteer Poging 1 zoals hieronder wordt weergegeven.
- Ga op de bovenste navigatiebalk op de pagina van de Spark-geschiedenisserver naar het tabblad Uitvoerders .
- Download de stdout- en stderr-logboekbestanden voor het openen van de volledige uitvoer- en foutenlogboeken van bibliotheekbeheer.
Uw machtigingen valideren
Als u bibliotheken wilt installeren en bijwerken, moet u de machtiging Inzender voor opslagblobgegevens of de eigenaar van opslagblobgegevens hebben voor het primaire Azure Data Lake Storage Gen2 Storage-account dat is gekoppeld aan de Azure Synapse Analytics-werkruimte.
Als u wilt controleren of u over deze machtigingen beschikt, kunt u de volgende code uitvoeren:
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")
Als u een foutmelding krijgt, ontbreken waarschijnlijk de vereiste machtigingen. Als u wilt weten hoe u de vereiste machtigingen kunt verkrijgen, gaat u naar dit document: Machtigingen voor inzender voor opslagblobgegevens of machtigingen voor de eigenaar van opslagblobgegevens toewijzen.
Als u een pijplijn uitvoert, moet de MSI van de werkruimte bovendien de machtigingen voor eigenaar van opslagblobgegevens of inzender voor opslagblobgegevens hebben. Als u wilt weten hoe u uw werkruimte-id aan deze machtiging kunt verlenen, gaat u naar: Machtigingen verlenen aan de beheerde identiteit van de werkruimte.
Het omgevingsconfiguratiebestand controleren
Een omgevingsconfiguratiebestand kan worden gebruikt om de Conda-omgeving te upgraden. Deze acceptabele bestandsindelingen voor Python-poolbeheer worden vermeld als omgevingsspecificaties.
Het is belangrijk om rekening te houden met de volgende beperkingen:
- De inhoud van het vereistenbestand mag geen extra lege regels of tekens bevatten.
- Synapse Runtime bevat een set bibliotheken die vooraf zijn geïnstalleerd op elke serverloze Apache Spark-pool. Pakketten die vooraf zijn geïnstalleerd op de basisruntime, kunnen niet worden verwijderd of verwijderd.
- Het wijzigen van de PySpark-, Python-, Scala/Java-, .NET- of Spark-versie wordt niet ondersteund.
- Python-bibliotheken met sessiebereik accepteren alleen bestanden met een YML-extensie.
Wielbestanden valideren
De Serverloze Apache Spark-pools van Synapse zijn gebaseerd op de Linux-distributie. Wanneer u Wheel-bestanden rechtstreeks downloadt en installeert vanuit PyPI, moet u de versie selecteren die is gebouwd op Linux en wordt uitgevoerd op dezelfde Python-versie als de Spark-pool.
Belangrijk
Aangepaste pakketten kunnen worden toegevoegd of gewijzigd tussen sessies. U moet echter wachten totdat de pool en sessie opnieuw worden opgestart om het bijgewerkte pakket te zien.
Controleren op afhankelijkheidsconflicten
Over het algemeen kan het lastig zijn om python-afhankelijkheidsresolutie te beheren. Als u afhankelijkheidsconflicten lokaal wilt opsporen, kunt u uw eigen virtuele omgeving maken op basis van de Synapse Runtime en uw wijzigingen valideren.
De omgeving opnieuw maken en uw updates valideren:
Download de sjabloon om de Synapse-runtime lokaal opnieuw te maken. Er kunnen kleine verschillen zijn tussen de sjabloon en de werkelijke Synapse-omgeving.
Maak een virtuele omgeving met behulp van de volgende instructies. Met deze omgeving kunt u een geïsoleerde Python-installatie maken met de opgegeven lijst met bibliotheken.
conda myenv create -f environment.yml conda activate myenv
Gebruik
pip install -r <provide your req.txt file>
dit om de virtuele omgeving bij te werken met uw opgegeven pakketten. Als de installatie resulteert in een fout, kan er een conflict optreden tussen wat vooraf is geïnstalleerd in de Synapse-basisruntime en wat is opgegeven in het opgegeven vereistenbestand. Deze afhankelijkheidsconflicten moeten worden opgelost om de bijgewerkte bibliotheken in uw serverloze Apache Spark-pool op te halen.
Belangrijk
Er kunnen problemen optreden wanneer pip en conda samen worden gebruikt. Bij het combineren van pip en conda kunt u deze aanbevolen aanbevolen procedures volgen.
Volgende stappen
- De standaardbibliotheken weergeven: ondersteuning voor Apache Spark-versies