Share via


Felsöka biblioteksinstallationsfel

Om du vill göra kod från tredje part eller lokalt skapad tillgänglig för dina program kan du installera ett bibliotek på en av dina serverlösa Apache Spark-pooler. Paketen som anges i requirements.txt-filen laddas ned från PyPi vid tidpunkten för poolstarten. Den här kravfilen används varje gång en Spark-instans skapas från spark-poolen. När ett bibliotek har installerats för en Spark-pool är det tillgängligt för alla sessioner som använder samma pool.

I vissa fall kan det hända att ett bibliotek inte visas i Apache Spark-poolen. Det här fallet inträffar ofta när det finns ett fel i de angivna requirements.txt eller angivna biblioteken. När ett fel inträffar i biblioteksinstallationsprocessen återgår Apache Spark-poolen till bibliotek som anges i Synapse-baskörningen.

Målet med det här dokumentet är att tillhandahålla vanliga problem och att hjälpa dig att felsöka installationsfel för bibliotek.

Framtvinga uppdatering av Apache Spark-poolen

När du uppdaterar biblioteken i Apache Spark-poolen hämtas ändringarna när poolen har startats om. Om du har aktiva jobb fortsätter de här jobben att köras på den ursprungliga versionen av Spark-poolen.

Du kan tvinga ändringarna att tillämpas genom att välja alternativet Framtvinga nya inställningar. Den här inställningen avslutar alla aktuella sessioner för den valda Spark-poolen. När sessionerna har avslutats måste du vänta tills poolen startas om.

Lägga till Python-bibliotek

Spåra installationsstatus

Ett systemreserverade Spark-jobb startas varje gång en pool uppdateras med en ny uppsättning bibliotek. Det här Spark-jobbet hjälper dig att övervaka biblioteksinstallationens status. Om installationen misslyckas på grund av bibliotekskonflikter eller andra problem återgår Spark-poolen till sitt tidigare eller standardtillstånd.

Dessutom kan användarna även granska installationsloggarna för att identifiera beroendekonflikter eller se vilka bibliotek som installerades under pooluppdateringen.

Så här visar du dessa loggar:

  1. Gå till listan med Spark-program på fliken Övervaka .
  2. Välj det System Spark-programjobb som motsvarar din pooluppdatering. Dessa systemjobb körs under rubriken SystemReservedJob-LibraryManagement . Skärmbild som visar jobbet för systemreserverade bibliotek.
  3. Växla för att visa drivrutins - och stdout-loggarna .
  4. I resultatet visas loggarna som är relaterade till installationen av dina paket. Skärmbild som visar resultat för systemreserverade biblioteksjobb.

Spåra installationsfel

I vissa fall kan användarna också granska de fullständiga installationsloggarna som är tillgängliga i Spark-historikservern för att identifiera komplicerade beroendekonflikter. Loggarna som är tillgängliga via Spark-användargränssnittet kan trunkeras och det skulle vara användbart att komma åt de fullständiga installationsloggarna via Spark-historikservern i komplexa installationsscenarier för bibliotek.

Så här visar du de fullständiga installationsloggarna:

  1. Gå till listan med Spark-program på fliken Övervaka .
  2. Välj det System Spark-programjobb som motsvarar den misslyckade pooluppdateringen. Dessa systemjobb körs under rubriken SystemReservedJob-LibraryManagement . Skärmbild som visar det misslyckade systemreserverade biblioteksjobbet.
  3. Välj det markerade serveralternativet Spark-historik som öppnar informationssidan för Spark-historikservern på en ny flik. Skärmbild som visar information om det misslyckade systemreserverade biblioteksjobbet.
  4. På den här sidan visas 2 försök, välj Försök 1 enligt nedan. Skärmbild som visar executor-informationen på serversidan för Spark-historik för det systemreserverade biblioteksjobbet som misslyckades.
  5. I det övre navigeringsfältet på serversidan för Spark-historik växlar du till fliken Utförare. Skärmbild som visar jobbinformationen på serversidan för Spark-historik för det misslyckade systemreserverade biblioteksjobbet.
  6. Ladda ned stdout - och stderr-loggfilerna för att få åtkomst till fullständiga bibliotekshanteringsutdata och felloggar. Skärmbild som visar serversidan för Spark-historik för det systemreserverade biblioteksjobbet som misslyckades.

Verifiera dina behörigheter

Om du vill installera och uppdatera bibliotek måste du ha behörigheten Storage Blob Data Contributor eller Storage Blob Data Owner för det primära Azure Data Lake Storage Gen2 Storage-kontot som är länkat till arbetsytan Azure Synapse Analytics.

Du kan kontrollera att du har dessa behörigheter genom att köra följande 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")

Om du får ett felmeddelande saknar du förmodligen de behörigheter som krävs. Information om hur du skaffar de behörigheter som krävs finns i det här dokumentet: Tilldela behörigheter för Storage Blob Data-deltagare eller Storage Blob Data-ägare.

Om du kör en pipeline måste arbetsytans MSI dessutom ha behörigheten Storage Blob Data Owner eller Storage Blob Data Contributor. Information om hur du beviljar din arbetsyteidentitet den här behörigheten finns i: Bevilja behörigheter till arbetsytans hanterade identitet.

Kontrollera miljökonfigurationsfilen

En miljökonfigurationsfil kan användas för att uppgradera Conda-miljön. Dessa godkända filformat för Hantering av Python-pooler visas som miljöspecifikationer.

Observera följande begränsningar:

  • Innehållet i kravfilen får inte innehålla extra tomma rader eller tecken.
  • Synapse Runtime innehåller en uppsättning bibliotek som är förinstallerade på varje serverlös Apache Spark-pool. Paket som är förinstallerade på baskörningen kan inte tas bort eller avinstalleras.
  • Det går inte att ändra versionerna PySpark, Python, Scala/Java, .NET eller Spark.
  • Python-bibliotek med sessionsomfång accepterar endast filer med ett YML-tillägg.

Validera hjulfiler

Synapse-serverlösa Apache Spark-pooler baseras på Linux-distributionen. När du laddar ned och installerar Wheel-filer direkt från PyPI måste du välja den version som bygger på Linux och körs på samma Python-version som Spark-poolen.

Viktigt

Anpassade paket kan läggas till eller ändras mellan sessioner. Du måste dock vänta tills poolen och sessionen startas om för att se det uppdaterade paketet.

Sök efter beroendekonflikter

I allmänhet kan det vara svårt att hantera python-beroendematchning. För att felsöka beroendekonflikter lokalt kan du skapa en egen virtuell miljö baserat på Synapse Runtime och verifiera dina ändringar.

Så här återskapar du miljön och validerar dina uppdateringar:

  1. Ladda ned mallen för att återskapa Synapse-körningen lokalt. Det kan finnas små skillnader mellan mallen och den faktiska Synapse-miljön.

  2. Skapa en virtuell miljö med hjälp av följande instruktioner. Med den här miljön kan du skapa en isolerad Python-installation med den angivna listan över bibliotek.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. Använd pip install -r <provide your req.txt file> för att uppdatera den virtuella miljön med dina angivna paket. Om installationen resulterar i ett fel kan det uppstå en konflikt mellan vad som är förinstallerat i Synapse-baskörningen och vad som anges i den angivna kravfilen. Dessa beroendekonflikter måste lösas för att kunna hämta de uppdaterade biblioteken i din serverlösa Apache Spark-pool.

Viktigt

Problem kan uppstå när du använder pip och conda tillsammans. När du kombinerar pip och conda är det bäst att följa dessa rekommenderade metodtips.

Nästa steg