PySpark Intervjufrågor
Av Aaron Cao · Uppdaterad

PySpark-intervjuer fokuserar på exekveringsmodellen och på prestanda. Räkna med att förklara transformations mot actions, peka ut vilka operationer som orsakar en shuffle, välja en broadcast join, diagnostisera data skew, motivera caching och beskriva hur du skulle finjustera ett job som får slut på minne.
Vad frågar intervjuare om exekveringsmodellen?
Du kan skriva fungerande PySpark och ändå snubbla här, för de här frågorna gäller vad motorn gör snarare än vad din kod säger. Intervjuare öppnar med dem just för att de skiljer ut personer som har finjusterat ett job från personer som bara har kört ett. Det här avsnittet täcker modellfrågorna och vad ett fullständigt svar innehåller.
- Transformation eller action, vad är skillnaden? Transformations bygger en plan och returnerar lazy en ny DataFrame; actions som
count,collecteller en write utlöser exekvering. Inget beräknas förrän en action begär ett resultat. - Varför är lazyness användbart? Optimeraren ser hela kedjan innan den körs, så den kan ordna om filter, beskära kolumner och slå ihop steg.
- Narrow eller wide transformation? Narrow-operationer som
filterochselecthåller varje utdatapartition beroende av en enda indatapartition. Wide-operationer somgroupBy,joinochdistinctomfördelar data mellan partitioner, vilket är en shuffle. - Vad är en shuffle och varför spelar det roll? Data flyttas över nätverket och når disk, vilket bildar en stage-gräns. Det är oftast det dyraste ett job gör.
- Förklara job, stage och task. En action startar ett job, shuffle-gränser delar upp det i stages, och varje stage kör en task per partition.
- RDD, DataFrame eller Dataset? Föredra DataFrame, eftersom Catalyst-optimeraren och kolumnbaserad exekvering gäller där. RDD:er finns kvar för lågnivåkontroll. Typade Datasets är ett JVM-koncept, så på Python är det ärliga svaret att de inte gäller.
Säg orden shuffle och stage när de hör hemma i svaret. Intervjuare använder dem som en genväg för om du någonsin har läst en Spark UI.
Hur svarar du på prestandafrågorna?
De flesta PySpark-intervjuer på senior-nivå är prestandaintervjuer. Frågorna kommer som scenarier snarare än definitioner.
- En join är långsam. Vad kontrollerar du? Storleken på varje sida först. Om en sida ryms i executor-minnet, broadcasta den och hoppa över shuffle helt. Titta annars på partitioning och skew innan du rör klusterstorleken.
- Vad är data skew och hur åtgärdar du det? Ett fåtal keys innehåller de flesta raderna, så en task körs länge efter att resten är klara. Åtgärder inkluderar salting av hot key, broadcast av den mindre sidan, eller filtrering av null-värden som alla hashar till samma plats. Diagnossignalen är spridningen i task-varaktighet i Spark UI.
- När cachar eller persistar du? När en DataFrame återanvänds över flera actions och omberäkning skulle vara kostsam. Att cacha något som används en gång slösar minne, och unpersist spelar roll i långa job.
- Repartition eller coalesce? Repartition shufflar och kan öka eller minska partitioner jämnt; coalesce slår ihop utan en fullständig shuffle, det billigare sättet att minska antalet utdatafiler.
- Varför undvika en Python-UDF? Rader serialiseras mellan JVM:en och en Python-process, och optimeraren kan inte se in i funktionen. Föredra inbyggda funktioner, och ta till en vectorized UDF bara när ingen inbyggd finns.
- Varför är
collectfarligt? Det drar hela resultatet till drivern och kan tömma dess minne. - Ett job misslyckas med out of memory. Vad är din utredningsordning? Om det är driver eller executor, sedan skew, sedan partitionsstorlek, sedan minneskonfigurationen. Att höja minnet först är svaret som signalerar bristande erfarenhet.
En data engineer som intervjuade för ett plattformsteam fick frågan varför ett nattligt job som hade kört i ett år plötsligt tog fyra timmar. Svaret som landade var inte en konfigurationsändring, utan att en uppströms-partner började skicka null-värden i join-nyckeln, så varje null-rad hashade till samma partition. Intervjuare belönar den ordningen: titta på data innan klustret.
Relaterade frågebanker per roll finns under interview questions by role.
Vilka praktiska och datahanteringsfrågor kommer upp?
De återstående frågorna kontrollerar om du har levererat en pipeline snarare än bara avslutat en tutorial.
- Hur läser du data effektivt? Kolumnbaserade format som Parquet, partition pruning på filterkolumnen, och predicate pushdown. Förklara varför att läsa färre bytes slår att optimera vad som händer efteråt.
- Varför definiera ett schema istället för att låta det inferreras? Inferens kostar en extra genomgång av datan och kan gissa typer inkonsekvent mellan körningar.
- Hur hanterar du null-värden och dubbletter? De relevanta funktionerna, plus poängen att null-tunga join-nycklar skapar skew.
- Vad används window functions till? Rankning, löpande summor och deduplicering till den senaste posten per key, en mycket vanlig pipelineuppgift.
- Hur skriver du output utan att producera tusentals små filer? Coalesce eller repartition innan skrivning, och partitionera output efter en kolumn med rimlig kardinalitet.
- Hur testar du PySpark-kod? Små lokala sessioner med fixture-DataFrames, och affärslogik uppdelad i funktioner som tar emot och returnerar DataFrames.
- Hur submittar och konfigurerar du ett job? Antal executors, kärnor och minne, samt resonemanget att både för många små executors och för få stora slösar kapacitet.
Hur bör du öva innan intervjun?
PySpark-svar misslyckas högt på ett igenkännbart sätt. Kandidaten vet att en shuffle är kostsam men kan inte säga vilka operationer som orsakar en, så svaret blir en lista med adjektiv. Att läsa en frågebank ger igenkänning, och igenkänning är inte samma sak som en förklaring given medan någon väntar.
Ta en pipeline du har byggt och berätta om den från början till slut: läsningen, varje transformation, var stage-gränserna hamnar, och vad du skulle kontrollera först om den saktade ner. Gör det högt tills du slutar börja om. Att köra dessa prompts mot en AI-intervjuare som ställer följdfrågan ligger närmare en riktig runda än att läsa om anteckningar, och det är vad läget mock interview är byggt för.
Aaron Cao, grundare av SubcueAI, byggde övningen kring just den talgluggen snarare än kring att tillhandahålla fler frågor. I en live-intervju kan skrivbordsappen och webbläsartilläggets Side Panel visa struktur medan intervjuaren talar, vilket hjälper mest på material du redan har repeterat. Konfigurationen tar några minuter och beskrivs på sidan tutorial.
FAQ
Innehåller PySpark-intervjuer live-kodning?
Hur mycket SQL behöver jag för en PySpark-roll?
Bör jag lära mig Scala för en Spark-intervju?
Vad är det vanligaste PySpark-intervjumisstaget?
Kan en AI-assistent hjälpa mig under en live data engineering-intervju?
Relaterade frågor
- Vilka typer av frågor förekommer i kodintervjuer och hur kan en AI-assistent hjälpa till?
- Vilka frågor ställs i en HireVue-videointervju?
- Vilka intervjufrågor om Databricks kan jag förvänta mig?
- Vilka .NET-intervjufrågor kan jag vänta mig?
- Vilka intervjufrågor kan jag förvänta mig som kvalitetsingenjör?
- Vilka frågor kan jag vänta mig i en quantintervju?