Delen via


Bibliotheekinstallatiefouten oplossen

Als u code van derden of lokaal gebouwde code beschikbaar wilt maken voor uw toepassingen, kunt u een bibliotheek installeren op een van uw serverloze Apache Spark-pools. De pakketten die worden vermeld in het requirements.txt-bestand, worden gedownload van PyPi op het moment van het opstarten van de pool. Dit vereistenbestand wordt elke keer gebruikt wanneer een 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 kan het gebeuren dat er geen bibliotheek wordt weergegeven in uw Apache Spark-pool. Dit geval treedt vaak op wanneer er een fout optreedt in de opgegeven requirements.txt of opgegeven bibliotheken. Wanneer er een fout optreedt in het installatieproces van de bibliotheek, keert de Apache Spark-pool terug naar bibliotheken die zijn opgegeven in de Synapse-basisruntime.

Het doel van dit document is om veelvoorkomende problemen te bieden 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, blijven deze taken worden 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.

Python-bibliotheken toevoegen

De voortgang van de installatie bijhouden

Een door het systeem gereserveerde Spark-taak wordt gestart telkens wanneer een pool wordt bijgewerkt met een nieuwe set bibliotheken. Met deze Spark-taak kunt u de status van de bibliotheekinstallatie bewaken. Als de installatie mislukt vanwege bibliotheekconflicten of andere problemen, wordt de vorige of standaardstatus van de Spark-pool hersteld.

Daarnaast kunnen gebruikers ook de installatielogboeken inspecteren om afhankelijkheidsconflicten te identificeren of te zien welke bibliotheken zijn geïnstalleerd tijdens de poolupdate.

Ga als volgt te werk om deze logboeken weer te geven:

  1. Navigeer naar de lijst met Spark-toepassingen op het tabblad Monitor .
  2. Selecteer de spark-toepassingstaak van het systeem die overeenkomt met uw poolupdate. Deze systeemtaken worden uitgevoerd onder de titel SystemReservedJob-LibraryManagement . Schermopname waarin de door het systeem gereserveerde bibliotheektaak wordt gemarkeerd.
  3. Schakel over om de logboeken van het stuurprogramma en stdout weer te geven.
  4. In de resultaten ziet u de logboeken met betrekking tot de installatie van uw pakketten. Schermopname met de resultaten van de door het systeem gereserveerde bibliotheektaak gemarkeerd.

Installatiefouten bijhouden

In bepaalde gevallen kunnen gebruikers ook de volledige installatielogboeken controleren die beschikbaar zijn in de Spark History Server om gecompliceerde afhankelijkheidsconflicten te identificeren. De logboeken die beschikbaar zijn via de Spark-gebruikersinterface kunnen worden afgekapt en toegang tot de volledige installatielogboeken via de Spark History Server is handig in complexe installatiescenario's voor bibliotheken.

De volledige installatielogboeken weergeven:

  1. Navigeer naar de lijst met Spark-toepassingen op het tabblad Monitor .
  2. Selecteer de spark-toepassingstaak van het systeem die overeenkomt met de mislukte poolupdate. Deze systeemtaken worden uitgevoerd onder de titel SystemReservedJob-LibraryManagement . Schermopname waarin de mislukte door het systeem gereserveerde bibliotheektaak is gemarkeerd.
  3. Selecteer de gemarkeerde optie spark-geschiedenisserver, waarmee de pagina met details van de Spark-geschiedenisserver op een nieuw tabblad wordt geopend. Schermopname waarin de details van de mislukte gereserveerde bibliotheektaak van het systeem worden gemarkeerd.
  4. Op deze pagina ziet u 2 pogingen. Selecteer Poging 1 zoals hieronder wordt weergegeven. Schermopname met de details van de uitvoerder gemarkeerd op de pagina van de spark-geschiedenisserver voor de mislukte door het systeem gereserveerde bibliotheektaak.
  5. Ga op de bovenste navigatiebalk op de pagina van de Spark-geschiedenisserver naar het tabblad Uitvoerders. Schermopname waarin de taakdetails worden gemarkeerd op de pagina van de Spark-geschiedenisserver voor de mislukte door het systeem gereserveerde bibliotheektaak.
  6. Download de stdout - en stderr-logboekbestanden voor toegang tot de volledige uitvoer en foutenlogboeken van bibliotheekbeheer. Schermopname waarin de serverpagina van de Spark-geschiedenis wordt gemarkeerd voor de mislukte door het systeem gereserveerde bibliotheektaak.

Uw machtigingen valideren

Als u bibliotheken wilt installeren en bijwerken, moet u de machtigingen Inzender voor opslagblobgegevens of Eigenaar van opslagblobgegevens hebben voor het primaire Azure Data Lake Storage Gen2 Opslagaccount 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 toewijzen of Machtigingen voor eigenaar van opslagblobgegevens toewijzen.

Als u bovendien een pijplijn uitvoert, moet de werkruimte-MSI ook beschikken over de machtigingen Eigenaar van opslagblobgegevens of Inzender voor opslagblobgegevens. Voor meer informatie over het verlenen van deze machtiging aan uw werkruimte-identiteit, gaat u naar: Machtigingen verlenen aan door werkruimte beheerde identiteit.

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.
  • Bibliotheken met python-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 vanuit PyPI downloadt en installeert, 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 tussen sessies worden toegevoegd of gewijzigd. U moet echter wachten tot de pool en de sessie opnieuw zijn opgestart om het bijgewerkte pakket te zien.

Controleren op afhankelijkheidsconflicten

Over het algemeen kan python-afhankelijkheidsoplossing lastig te beheren zijn. Om afhankelijkheidsconflicten lokaal op te sporen, 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:

  1. Download de sjabloon om de Synapse-runtime lokaal opnieuw te maken. Er kunnen kleine verschillen zijn tussen de sjabloon en de werkelijke Synapse-omgeving.

  2. 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
    
  3. Gebruik pip install -r <provide your req.txt file> om de virtuele omgeving bij te werken met de opgegeven pakketten. Als de installatie resulteert in een fout, kan er een conflict zijn 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

Problemen kunnen optreden wanneer pip en conda samen worden gebruikt. Wanneer u pip en conda combineert, kunt u het beste deze aanbevolen procedures volgen.

Volgende stappen