Top 50 Apache Spark Pitanja i odgovori za intervju (2026.)

Vrhunski Apache Spark Intervjuirajte pitanja i odgovore

Priprema za intervju o velikim podacima znači predviđanje izazova koji stoje iza distribuirane obrade i stvarnih analitičkih sustava. apaš Spark Usmeni dio testiranja otkriti kako poslodavci procjenjuju skalabilnost, učinkovitost i dubinu razmišljanja.

mastering Spark otvara radna mjesta na analitičkim platformama, streamingu i AI cjevovodima, gdje su tehničko iskustvo i stručnost u domeni važni. Stručnjaci koji rade u tom području primjenjuju analitičke vještine, surađuju s voditeljima timova i menadžerima te koriste praktična pitanja i odgovore kako bi pomogli kandidatima početnicima, kandidatima srednje i više razine da uspješno i s povjerenjem polože intervjue.
Čitaj više…

👉 Besplatno preuzimanje PDF-a: Apache Spark Pitanja i odgovori za intervju

Vrhunski Apache Spark Intervjuirajte pitanja i odgovore

1) Što je Apache Spark i zašto se široko koristi u obradi velikih podataka?

apaš Spark je distribuirani analitički mehanizam otvorenog koda dizajniran za obrada podataka velikih razmjeraPruža objedinjeni računalni okvir koji podržava serijsko i strujanje u stvarnom vremenu, napredna analitika, strojno učenje i obrada grafova, sve unutar jednog alata. Spark koristi izračune u memoriji kako bi značajno ubrzao obradu podataka u usporedbi s tradicionalnim sustavima temeljenim na disku poput Hadoop MapReducea.

SparkKljučne snage su:

  • Obrada u memoriji: Smanjuje ulazno/izlazne operacije na disku i ubrzava iterativne algoritme.
  • skalabilnost: Može obraditi skupove podataka veličine petabajta u distribuiranim klasterima.
  • Fleksibilnost API-ja: Podržava Scalu, Java, Python, R i SQL.
  • Ujedinjeni ekosustav: Nudi više ugrađenih modula (SQL, Streaming, MLlib, GraphX).

Primjer: Tipičan Spark Posao bi mogao učitati terabajte podataka iz HDFS-a, izvršiti složeni ETL, primijeniti strojno učenje i zapisati rezultate u skladišta podataka - sve unutar iste aplikacije.


2) Kakav je Apache Spark razlikuje se od Hadoop MapReducea?

apaš Spark i Hadoop MapReduce su oba okviri za velike podatke, ali se značajno razlikuju u arhitekturi, performansama i mogućnostima:

svojstvo apaš Spark Hadoop MapReduce
Model obrade Izvršavanje u memoriji Izvršavanje na disku
Brzina Do 100× brže za iterativne zadatke Sporije zbog diskovnog I/O
Radna opterećenja Grupno + strujno + interaktivno + strojno učenje Primarno serija
Jednostavnost korištenja API-ji na više jezika, SQL podrška Ograničeniji API-ji
Tolerancija kvarova RDD loza Replikacija diska

Spark izbjegava zapisivanje međurezultata na disk u mnogim scenarijima, što ubrzava obradu, posebno za iterativno strojno učenje i izračune grafova.


3) Objasnite Spark komponente ekosustava.

Apači Spark Ekosustav se sastoji od nekoliko integriranih komponenti:

  1. Spark Jezgra: Osnovni mehanizam za raspoređivanje, upravljanje memorijom, oporavak od grešaka i raspoređivanje zadataka.
  2. Spark SQL: Strukturirana obrada podataka s SQL podrškom i Catalyst optimizatorom.
  3. Spark Streaming: Obrada podataka u stvarnom vremenu putem mikro-serija.
  4. MLlib: Biblioteka strojnog učenja za skalabilne algoritme.
  5. GraphX: API za obradu i izračunavanje grafova.

Svaka od ovih komponenti omogućuje programerima pisanje aplikacija spremnih za produkciju za različite slučajeve obrade podataka unutar istog okruženja za izvođenje.


4) Što su RDD-ovi u Apacheu SparkZašto su važni?

Otporni distribuirani skupovi podataka (RDD) su glavna apstrakcija u Spark, koji predstavlja nepromjenjiva distribuirana kolekcija objekata obrađuju se paralelno na svim čvorovima klastera. RDD-ovi su otporni na greške jer Spark pjesme informacije o porijeklu—zapis transformacija korištenih za izvođenje skupa podataka — što omogućuje ponovni izračun izgubljenih particija podataka u slučaju kvara.

Ključne karakteristike:

  • Nepromjenjiv i distribuiran.
  • Može se lijeno transformirati putem transformacija.
  • Radnje pokreću izvršenje.

Primjer: Korištenje map() transformirati podatke i count() za pokretanje izvršenja pokazuje kako transformacije grade DAG-ove, a akcije izračunavaju rezultate.


5) Što je lijena evaluacija u Spark, i zašto je to korisno?

Lijena evaluacija u Spark znači transformacije (kao što su map, filter) su nije odmah izvršeno, umjesto toga, Spark gradi logički plan (DAG) transformacija i izvršava ga samo kada se izvrši akcija (kao collect(), count()) se poziva.

Prednosti:

  • omogućava optimalna optimizacija tijeka rada preraspoređivanjem i kombiniranjem koraka prije izvršenja.
  • Smanjuje nepotrebno računanje i I/O opterećenje.

6) Usporedite RDD, DataFrame i Dataset u Spark.

Spark pruža tri osnovne apstrakcije za rad s podacima:

svojstvo RDD DataFrame skup podataka
Vrsta Sigurnost Nizak Nizak visok
Optimizirani upit Ne Da (katalizator) Da
Jednostavnost korištenja Priručnik visok Umjereno
Jezična podrška Svi API-ji Svi API-ji Skala/Java samo
  • RDD: Niskorazinska, nepromjenjiva distribuirana kolekcija.
  • Okvir podataka: Shema temeljena na optimiziranoj tabličnoj strukturi.
  • Skup podataka: Strogo tipiziran kao RDD, ali optimiziran kao DataFrame.

7) Što su transformacije i radnje u SparkNavedite primjere.

Transformacije grade nove skupove podataka iz postojećih i lijen:

  • map(), filter(), flatMap()

Radnje pokreću izvršavanje i vraćaju rezultate:

  • collect(), count(), saveAsTextFile()

8) Objasnite usmjereni aciklički graf (DAG) u Spark.

A DAG predstavlja slijed transformacija i tvori logički plan izvršenja u SparkČvorovi predstavljaju RDD-ove ili skupove podataka, a rubovi predstavljaju transformacije. Spark koristi DAG za planiranje optimiziranih faza izvršavanja kako bi se smanjilo premještanje podataka i ponovno izračunavanje.


9) Koja je uloga optimizatora Catalyst u Spark SQL?

The Optimizator katalizatora is Spark SQL-ov mehanizam za optimizaciju upita. Pretvara upite visoke razine u učinkovite fizičke planove primjenom optimizacija temeljenih na pravilima i troškovima, kao što su potiskivanje predikata, obrezivanje projekcija i promjena redoslijeda spajanja.


10) Objasnite Spark Streaming vs. strukturirani streaming.

  • Spark Streaming: Obrađuje podatke kao mikro-serije koristeći DStream apstrakciju.
  • Strukturirano strujanje: Noviji, optimizirani API izgrađen na Spark SQL-ov mehanizam, koji omogućuje inkrementalnu obradu sa semantikom vremena događaja i boljom tolerancijom grešaka.

11) Što su broadcast varijable i akumulatori u Spark?

  • Varijable emitiranja: Učinkovito dijelite podatke samo za čitanje između svih radnih čvorova bez slanja sa svakim zadatkom.
  • Akumulatori: Koristi se za agregiranje brojača ili zbrojeva među zadacima (npr. brojanje događaja).

12) Koja je razlika između cache() i persist()?

  • predmemorija(): Pohranjuje skup podataka u memoriju (zadano).
  • ustrajati(): Omogućuje određivanje drugih razina pohrane (disk, memorija+disk).

13) Kako se Spark podržava toleranciju grešaka?

Spark namjene RDD loza i DAG-u do ponovno izračunaj izgubljene particije podataka u slučaju kvarova radnika. Kontrolne točke također mogu pohraniti podatke u stabilnu pohranu za duge cjevovode.


14) Objasnite particioniranje u Spark i njegovu važnost.

Particioniranje određuje kako se podaci distribuiraju po čvorovima klastera. Dobro osmišljeno particioniranje minimizira premještanje podataka (miješanje) i podržava paralelizam, što je ključno za performanse.


15) Što su poslovi, faze i zadaci u Sparkmodel izvršenja?

  • Posao: Pokrenuto radnjom.
  • faza: Skup transformacija bez premještanja.
  • Zadatak: Najmanja izvršna jedinica koja radi na particiji.

16) Objasnite arhitekturu Apachea Spark detaljno.

apaš Spark slijedi a arhitektura majstora i radnika dizajniran za distribuiranu obradu podataka u velikim razmjerima. Središnja komponenta je Program za vozače, koji pokreće glavnu logiku aplikacije i održava informacije o Spark aplikacija. Vozač komunicira s Cluster Voditelj, koji može biti Samostalni, YARN, Mesos ili Kubernetes, za zahtjev za resurse.

Nakon što su resursi dodijeljeni, Spark pokreće Izvršitelji na radnim čvorovima. Izvršitelji su odgovorni za izvršavanje zadataka i pohranjivanje podataka u memoriju ili na disk. Upravljački program dijeli aplikaciju na poslovi, koji se dalje dijele na faze na temelju granica miješanja. Svaka faza sadrži više zadatke, gdje svaki zadatak obrađuje particiju podataka.

Ova arhitektura osigurava tolerancija kvarova, paralelno izvođenjei skalabilnostNa primjer, ako izvršitelj ne uspije, upravljački program može preraspodijeliti zadatke koristeći informacije o porijeklu bez ponovnog pokretanja cijelog posla.


17) Kako se Spark upravljati memorijom interno?

Spark upravlja memorijom putem ujedinjeni model upravljanja memorijom, koji dijeli memoriju izvršitelja na dva glavna područja: memorija izvršenja i memorija za pohranuIzvršna memorija koristi se za premještanje, spajanje, sortiranje i agregaciju, dok se memorija za pohranu koristi za predmemoriranje i pohranjivanje RDD-ova ili DataFramesa.

Za razliku od ranijeg Spark verzije sa statičkom alokacijom memorije, moderne Spark dinamički dijeli memoriju između izvršenja i pohrane. Ako izvršenju treba više memorije, predmemorirani podaci mogu se ukloniti i obrnuto. Ova fleksibilnost poboljšava performanse za složena opterećenja.

Na primjer, tijekom velike operacije spajanja, Spark može privremeno posuditi memoriju iz predmemoriranih skupova podataka kako bi se izbjeglo prelijevanje na disk. Ispravna konfiguracija spark.executor.memory i spark.memory.fraction ključno je spriječiti Pogreške zbog nedostatka memorije u proizvodnji.


18) Što su premještanja u Spark, a zašto su skupi?

A miješanje je proces preraspodjele podataka među particijama, koji se obično događa tijekom operacija poput groupByKey, reduceByKey, join, ili distinctMiješanja su skupa jer uključuju diskovni I/O, mrežni prijenos i serijalizacija podataka među izvršiteljima.

Spark dijeli operacije nasumičnog reproduciranja u više faza, zapisuje međupodatke na disk, a zatim ih dohvaća preko mreže. To povećava latenciju i korištenje resursa.

Kako bi se smanjili troškovi premještanja, Spark pruža optimizirane transformacije kao što su reduceByKey umjesto groupByKey, broadcast spajanja i odgovarajuće strategije particioniranja. Na primjer, zamjena groupByKey sa reduceByKey značajno smanjuje kretanje podataka i poboljšava performanse u opterećenjima s velikim zahtjevima za agregaciju.


19) Objasnite različite vrste spajanja u Spark s primjerima.

Spark podržava više strategija spajanja ovisno o veličini podataka i konfiguraciji:

Vrsta pridruživanja Description Koristite slučaj
Pridruži se emitiranju Mala tablica emitirana svim izvršiteljima Tablice dimenzija
Promiješaj spajanje hash-a Spajanje temeljeno na hash-u nakon miješanja Srednji skupovi podataka
Sortiraj Spoji Spoji Sortira oba skupa podataka prije spajanja Veliki skupovi podataka
Kartezijevo spajanje Vektorski produkt skupova podataka Rijetko, skupo

Broadcast spajanja su najučinkovitija kada je jedan skup podataka dovoljno malen da stane u memoriju. Na primjer, spajanje velikog skupa podataka o prodaji s malom tablicom za pretraživanje proizvoda ima koristi od broadcast spajanja.

Razumijevanje vrsta spajanja pomaže kandidatima da optimiziraju Spark poslove i izbjegavanje uskih grla u performansama u distribuiranim okruženjima.


20) Koja je razlika između groupByKey() i reduceByKey()?

Oboje groupByKey() i reduceByKey() koriste se za agregaciju, ali se značajno razlikuju u performansama i ponašanju.

Aspekt groupByKey smanjitiPoKljuču
Nasumično mijenjanje podataka visok smanjen
sakupljanje Nakon nasumičnog izvođenja Prije nasumičnog izmjenjivanja
Izvođenje sporiji Brže
Memorija Običaj Viši Optimizirano

groupByKey() prenosi sve vrijednosti preko mreže, dok reduceByKey() vrši lokalnu agregaciju prije miješanja podataka. U produkcijskim sustavima, reduceByKey() gotovo je uvijek poželjnije osim ako se izričito ne zahtijeva grupiranje pune vrijednosti.


21) Kako se Spark postići toleranciju grešaka bez replikacije podataka?

Spark postiže toleranciju grešaka korištenjem grafovi porijekla, koji bilježe slijed transformacija korištenih za izgradnju svakog skupa podataka. Umjesto repliciranja podataka poput Hadoop-a, Spark ponovno izračunava izgubljene particije koristeći informacije o porijeklu.

Kada čvor otkaže, Spark identificira koje su particije izgubljene i ponovno izvršava samo potrebne transformacije na preostalim podacima. Ovaj pristup je učinkovit i izbjegava opterećenje pohranom.

Za dugotrajne ili iterativne cjevovode, Spark podržava kontrolna točka, što sprema međurezultate u pouzdanu pohranu kao što je HDFS. To smanjuje troškove ponovnog izračuna i poboljšava vrijeme oporavka u velikim aplikacijama.


22) Što je spekulativno izvršenje u Spark, i kada ga treba koristiti?

Špekulativno izvršenje je Spark značajka koja ublažava utjecaj sporo izvršavajući zadaci, također poznati kao zaostali. Spark detektira zadatke koji su znatno sporiji od drugih i pokreće duplikate tih zadataka na različitim izvršiteljima.

Prvi zadatak koji završi se prihvaća, a preostali zadaci se prekidaju. To poboljšava ukupno vrijeme dovršetka posla u heterogenim ili nestabilnim klasterima.

Špekulativno izvršavanje korisno je u cloud ili dijeljenim okruženjima gdje se performanse hardvera razlikuju. Međutim, treba ga koristiti oprezno jer povećava potrošnju resursa i može uzrokovati nepotrebno dupliciranje zadataka.


23) Objasnite Spark životni ciklus izvršavanja od koda do rezultata.

The Spark Životni ciklus izvršenja započinje kada programer napiše transformacije i akcije. Transformacije se lijeno evaluiraju i koriste za izgradnju logički planKada se pozove akcija, Spark pretvara logički plan u plan fizičke izvedbe korištenjem optimizatora.

Upravljački program zatim šalje zadatke, dijeli ih u faze, a zatim u zadatke. Zadaci se raspoređuju na izvršiteljima koji paralelno obrađuju particije podataka. Rezultati se ili vraćaju upravljačkom programu ili zapisuju u vanjsku pohranu.

Ovaj životni ciklus osigurava učinkovito izvršavanje, optimizaciju i oporavak od grešaka, a istovremeno apstrahira složenost distribuiranih sustava od programera.


24) Koje su prednosti i nedostaci Apachea Spark?

apaš Spark pruža značajne prednosti, ali ima i ograničenja.

Prednosti Nedostaci
Brza obrada u memoriji Visoka potrošnja memorije
Ujedinjeni analitički mehanizam Strma krivulja učenja
Podržava seriju i streaming Less učinkovito za male skupove podataka
Bogat ekosustav Otklanjanje pogrešaka može biti složeno

Spark izvrsno se pokazuje u velikim, iterativnim i analitičkim radnim opterećenjima. Međutim, nepravilno podešavanje može dovesti do problema s memorijom, što stručnost čini ključnom za produkcijske implementacije.


25) Kako optimizirate sporo funkcionirajući Spark posao? Odgovorite s primjerima.

Optimiziranje Spark Poslovi zahtijevaju sustavan pristup. Uobičajene strategije uključuju smanjenje premještanja, korištenje učinkovitih spajanja, keširanje ponovno korištenih skupova podataka i podešavanje memorije izvršitelja. Praćenje Spark Korisničko sučelje pomaže u prepoznavanju uskih grla poput iskrivljenih particija ili dugog vremena sakupljanja smeća.

Na primjer, zamjena groupByKey() sa reduceByKey(), omogućavanje broadcast spajanja za male tablice i preraspodjeljivanje iskrivljenih podataka može dramatično poboljšati performanse. Ispravna konfiguracija izvršnih jezgri i memorije također osigurava optimalno korištenje resursa.

Učinkovita optimizacija pokazuje duboko praktično znanje, koje se visoko cijeni na višim pozicijama. Spark intervjui.


26) Objasnite Spark SQL i njegova uloga u Spark ekosustava.

Spark SQL je moćan modul za apaš Spark koji omogućuje obradu strukturirani i polustrukturirani podaci korištenjem SQL upita, okvira podataka i skupova podataka. Omogućuje programerima i analitičarima interakciju s Spark koristeći poznatu SQL sintaksu uz istovremeno iskorištavanje prednosti Sparkdistribuirani model izvršavanja.

Interno, Spark SQL pretvara SQL upite u logičke planove, koji su optimizirani pomoću Optimizator katalizatora, a zatim transformirani u fizičke planove izvršenja. Ova optimizacija uključuje potiskivanje predikata, obrezivanje stupaca i promjenu redoslijeda spajanja. Spark SQL se također besprijekorno integrira s Hiveom, omogućujući upite Hive tablica i kompatibilnost s postojećim skladištima podataka.

Na primjer, analitičari mogu pokretati SQL upite izravno na Parquet datotekama pohranjenim u HDFS-u bez pisanja složenih koda. Spark kod, istovremeno poboljšavajući produktivnost i performanse.


27) Što je Catalyst optimizer i kako poboljšava performanse?

Optimizator Catalyst je Spark SQL-ovi okvir za optimizaciju upita koji transformira upite visoke razine u učinkovite planove izvršenja. Koristi kombinaciju temeljen na pravilima i optimizacija temeljena na troškovima tehnike za poboljšanje izvršavanja upita.

Catalyst radi u više faza: analiza, logička optimizacija, fizičko planiranje i generiranje koda. Tijekom tih faza primjenjuje optimizacije kao što su savijanje konstanti, potiskivanje predikata, obrezivanje projekcija i odabir strategije spajanja.

Na primjer, ako upit filtrira retke prije spajanja tablica, Catalyst osigurava da se filtar primijeni što je ranije moguće, smanjujući količinu podataka koji se miješaju po klasteru. To značajno poboljšava performanse u velikim analitičkim opterećenjima.


28) Što je volfram i kako poboljšava Spark izvođenje?

Tungsten je inicijativa za optimizaciju performansi u Spark dizajniran za poboljšanje Učinkovitost CPU-a i upravljanje memorijomNjegov primarni cilj je omogućiti Spark raditi bliže golom metalu smanjenjem opterećenja uzrokovanog Java stvaranje objekata i sakupljanje smeća.

Volfram uvodi tehnike kao što su upravljanje memorijom izvan hrpe, strukture podataka prilagođene predmemoriranjui generiranje koda cijele fazeOva poboljšanja smanjuju opterećenje JVM-a i poboljšavaju brzinu izvršavanja SQL i DataFrame operacija.

Na primjer, generiranje koda na razini cijele faze kompajlira više operatora u jedan Java funkciju, smanjujući pozive virtualnih funkcija i poboljšavajući učinkovitost CPU cjevovoda. To čini Spark SQL opterećenja znatno brža u usporedbi s tradicionalnim modelima izvršavanja.


29) Objasnite strukturirani streaming i kako se razlikuje od Spark Strujanje.

Strukturirani streaming je API za strujanje visoke razine izgrađen na Spark SQL koji tretira podatke u streamu kao neograničenu tablicu. Za razliku od Spark Structured Streaming, koji koristi niskorazinske DStreamove i mikro-serijsku obradu, pruža deklarativni API-ji s jakim jamstvima.

Strukturirano strujanje podržava semantika točno jednom, obrada u vrijeme događaja, vodeni žigovi i tolerancija grešaka putem kontrolnih točaka. Programeri pišu strujne upite slično batch upitima i Spark automatski obrađuje inkrementalno izvršavanje.

Na primjer, obrada Kafka događaja pomoću strukturiranog strujanja omogućuje ispravnu obradu podataka koji kasne pomoću prozora vremena događaja, što ga čini prikladnim za analitiku i sustave praćenja u stvarnom vremenu.


30) Što je kontrolna točka u Spark, i kada ga treba koristiti?

Kontrolne točke su mehanizam koji se koristi za skraćivanje grafova loze spremanjem međurezultata u pouzdanu pohranu kao što su HDFS ili spremišta objekata u oblaku. Primarno se koristi za poboljšanje tolerancije grešaka i smanjenje opterećenja ponovnim izračunom u dugim ili složenim Spark radnih mjesta.

Spark podržava dvije vrste kontrolnih točaka: RDD kontrolna točka i Strukturirano streaming kontrolno mjestoU aplikacijama za strujanje, kontrolne točke su obavezne za održavanje stanja, pomaka i informacija o napretku.

Na primjer, u iterativnim cjevovodima strojnog učenja ili poslovima strujanja s praćenjem stanja, kontrolne točke sprječavaju skupo ponovno izračunavanje od početka loze u slučaju kvarova, osiguravajući stabilnost i pouzdanost u produkcijskim okruženjima.


31) Kako se Spark rješavati iskrivljenje podataka i kako se to može ublažiti?

Do iskrivljenja podataka dolazi kada određene particije sadrže znatno više podataka od drugih, što uzrokuje da se neki zadaci izvode puno dulje. To dovodi do neučinkovitog korištenja resursa i povećanog vremena dovršetka poslova.

Spark pruža više načina za rješavanje problema s iskrivljenjem podataka, uključujući soljenje ključeva, pridruživanja emitiranju, preraspodjelui adaptivno izvršavanje upita (AQE)AQE dinamički prilagođava planove izvršenja tijekom izvođenja cijepanjem iskrivljenih particija.

Na primjer, prilikom spajanja skupova podataka s vrlo asimetričnim ključem, dodavanje slučajnog prefiksa (soljenje) ravnomjernije raspoređuje podatke po particijama, poboljšavajući paralelizam i smanjujući zaostale podatke.


32) Objasnite adaptivno izvršavanje upita (AQE) u Spark.

Adaptivno izvršavanje upita je Spark značajka koja optimizira planove upita za vrijeme izvođenja na temelju stvarnih statističkih podataka. Za razliku od statičke optimizacije, AQE dinamički mijenja strategije izvršavanja nakon što izvršavanje upita započne.

AQE može automatski mijenjati strategije spajanja, optimizirati veličine particija za nasumično raspoređivanje i rukovati iskrivljenim spajanjima. To smanjuje potrebu za ručnim podešavanjem i poboljšava performanse pri različitim radnim opterećenjima.

Na primjer, ako Spark Ako u početku planira spajanje i sortiranje, ali kasnije otkrije da je jedan skup podataka malen, AQE može dinamički prijeći na broadcast spajanje, što rezultira bržim izvršavanjem bez promjena koda.


33) Koje su razlike između repartition() i coalesce()?

Oboje repartition() i coalesce() koriste se za promjenu broja particija, ali se ponašaju drugačije.

Aspekt distribucija srasti
Miješanje Da Ne (prema zadanim postavkama)
Izvođenje sporiji Brže
Koristite slučaj Povećanje particija Smanjenje particija

repartition() izvodi potpuno miješanje i koristan je pri povećanju paralelizma. coalesce() učinkovito smanjuje particije bez miješanja, što ga čini idealnim prije pisanja podataka u pohranu kako bi se izbjegle male datoteke.


34) Kako PySpark razlikovati se od Spark napisan u Scali?

PySpark osigurava Python API za Spark, Što omogućuje Python programeri mogu iskoristiti distribuirano računalstvo. Međutim, PySpark uvodi dodatne troškove zbog komunikacije između Python proces i JVM.

Skala Spark Aplikacije općenito rade bolje jer Scala izvorno radi na JVM-u. PySpark ublažava probleme s performansama korištenjem optimizacija poput Apache Arrow za prijenos podataka u stupcima.

U praksi, PySpark je preferiran za brzi razvoj i tijekove rada u znanosti o podacima, dok se Scala često bira za produkcijske sustave kritične za performanse.


35) Kako rješavate kvar Spark posao u proizvodnji? Odgovorite s primjerima.

Rješavanje problema Spark poslovi zahtijevaju analizu logova, Spark Metrike korisničkog sučelja i postavke konfiguracije. Uobičajeni problemi uključuju pogreške u memoriji, iskrivljenje podataka, duge pauze u prikupljanju smeća i neuspjehe u nasumičnom izvođenju.

Korištenje Spark Pomoću korisničkog sučelja inženjeri mogu identificirati spore faze, iskrivljene zadatke i korištenje memorije izvršitelja. Zapisnici pomažu u praćenju iznimki poput pogrešaka serijalizacije ili nedostajućih ovisnosti.

Na primjer, česti kvarovi izvršitelja mogu ukazivati ​​na nedovoljnu alokaciju memorije, što se može riješiti podešavanjem memorije izvršitelja ili smanjenjem veličine particija. Učinkovito rješavanje problema pokazuje stručnost u stvarnom radu, što je ključno očekivanje u razgovorima za posao višeg rukovodstva.


36) Objasnite različite upravitelje klastera koje podržava Apache Spark.

Spark podržava višestruko upravitelji klastera, koji su odgovorni za dodjelu resursa i raspoređivanje izvršitelja po čvorovima. Najčešće korišteni upravitelji klastera su Samostalni kontroleri, pređa, Mesosi Kubernetes.

Cluster Voditelj Karakteristike Koristite slučaj
Samostalni kontroleri Jednostavan, Spark-domaći Mali do srednji klasteri
pređa Integracija Hadoop ekosustava Postavke Hadoop-a za poduzeća
Mesos Dijeljenje resursa s preciznom granulacijom Mješovita radna opterećenja
Kubernetes Orkestracija temeljena na kontejnerima Implementacije u oblaku

YARN se široko primjenjuje u poduzećima zbog svoje stabilnosti i integracije s Hadoopom, dok je Kubernetes sve popularniji za cloud-native rješenja. Spark opterećenja zbog skalabilnosti i prednosti izolacije.


37) Što Spark Jesu li konfiguracijski parametri najvažniji za podešavanje performansi?

Spark Podešavanje performansi uvelike ovisi o pravilnoj konfiguraciji parametara izvršitelja i memorije. Najkritičnije konfiguracije uključuju:

  • spark.executor.memory – Memorija dodijeljena po izvršitelju
  • spark.executor.cores – Broj CPU jezgri po izvršitelju
  • spark.sql.shuffle.partitions – Broj nasumičnih particija
  • spark.driver.memory – Memorija dodijeljena upravljačkom programu
  • spark.memory.fraction – Stanje korištenja JVM memorije

Na primjer, povećanje spark.sql.shuffle.partitions poboljšava paralelizam za velike skupove podataka, ali može uzrokovati opterećenje ako je postavljeno previsoko. Učinkovito podešavanje zahtijeva balansiranje CPU-a, memorije i I/O-a na temelju karakteristika opterećenja.


38) Što je SparkKontekst vs. SparkSesija, i koja je razlika između njih?

SparkContext je izvorna ulazna točka za Spark funkcionalnost i odgovoran je za komunikaciju s upraviteljem klastera, upravljanje izvršiteljima i praćenje izvršavanja aplikacija.

SparkSession je jedinstvena ulazna točka uvedena u Spark 2.0 koji obuhvaća SparkContext, SQLContexti HiveContextPojednostavljuje razvoj aplikacija pružajući jedinstveno sučelje za sve Spark funkcionalnosti.

Aspekt SparkKontekst SparkSjednica
Predstavljen Rano Spark inačice Spark 2.0 +
Djelokrug Osnovna funkcionalnost Unificirani API
Upotreba RDD operacije niske razine SQL, okviri podataka, skupovi podataka

moderna Spark aplikacije bi uvijek trebale koristiti SparkSession.


39) Kako se Spark integrirati s Kafkom za obradu u stvarnom vremenu?

Spark integrira se s Kafkom prvenstveno kroz Strukturirano strujanje, što omogućuje pouzdanu i skalabilnu obradu podataka u stvarnom vremenu. Spark konzumira Kafka teme kao streaming DataFrames, podržavajući praćenje pomaka i semantiku točno jednom.

Spark održava Kafkine pomake u direktorijima kontrolnih točaka umjesto da ih izravno prenosi u Kafku, osiguravajući toleranciju grešaka. Ovaj dizajn omogućuje oporavak od grešaka bez gubitka podataka ili dupliciranja.

Na primjer, Spark može obrađivati ​​podatke o klikovima iz Kafke, agregirati događaje u stvarnom vremenu i pohranjivati ​​rezultate u skladište podataka. Ova se integracija često koristi u analitici vođenoj događajima i cjevovodima praćenja.


40) Što je točno - jednom obrada u Spark Strukturirani streaming?

Obrada točno jednom jamči da se svaki zapis obrađuje samo jednom, čak i u prisutnosti kvarova. Spark Strukturirani streaming to postiže korištenjem kontrolna točka, idempotent pišei determinističko izvršenje.

Spark prati napredak pomoću pomaka, informacija o stanju i metapodataka pohranjenih u kontrolnim točkama. Ako dođe do kvara, Spark nastavlja od posljednje uspješne kontrolne točke bez neispravne ponovne obrade podataka.

Na primjer, prilikom zapisivanja podataka za strujanje u Delta Jezerske ili transakcijske baze podataka, Spark osigurava da se djelomični zapisi sigurno ponište ili ponovno pokušaju, što semantiku točno jednom čini ključnom za financijske i kritične aplikacije.


41) Objasnite Spark sigurnosna arhitektura i mehanizmi autentifikacije.

Spark pruža više sigurnosnih značajki za zaštitu podataka i resursa klastera. Autentifikacija osigurava da samo ovlašteni korisnici i usluge mogu pristupiti Spark aplikacije, dok autorizacija kontrolira korištenje resursa.

Spark podržava Kerberos autentifikacija, SSL enkripcija za podatke u tranzitu i popisi kontrole pristupa (ACL) za korisničko sučelje i slanje poslova. Integracija sa sigurnošću Hadoop dodatno poboljšava zaštitu na razini poduzeća.

U sigurnim okruženjima, Spark Aplikacije se autentificiraju pomoću Kerberosa, šifriraju podatke za nasumično raspoređivanje i ograničavaju pristup zapisnicima i korisničkim sučeljima. Ove su mjere ključne za usklađenost u reguliranim industrijama.


42) Što je problem s malim datotekama u Spark, i kako to rješavate?

Problem s malim datotekama nastaje kada Spark zapisuje veliki broj sitnih datoteka u sustave za pohranu poput HDFS-a ili spremišta objekata u oblaku. To smanjuje performanse zbog prekomjernog opterećenja metapodataka i neučinkovitog čitanja.

Spark rješava ovaj problem tako što spajanje particija, podešavanje broja izlaznih particija i korištenje tehnika sažimanja datoteka. Korištenje coalesce() prije zapisivanja podataka je uobičajeno rješenje.

Na primjer, smanjenje izlaznih particija s tisuća na nekoliko stotina prije pisanja poboljšava performanse upita i smanjuje opterećenje servisa metapodataka.


43) Objasnite Spark načini raspoređivanja poslova.

Spark podržava dva načina raspoređivanja: FIFO i Pravedno raspoređivanje.

Način zakazivanja Description Koristite slučaj
FIFO Poslovi izvršeni redoslijedom slanja Jednostavna radna opterećenja
Fer Resursi dijeljeni između poslova Klasteri za više korisnika

Pravedno raspoređivanje osigurava da dugotrajni poslovi ne blokiraju manje interaktivne upite. Obično se koristi u dijeljenim okruženjima gdje više timova radi Spark poslovi istovremeno.


44) Koji su uobičajeni uzroci Spark neuspjesi u proizvodnji?

Spark Neuspjesi u radu mogu biti posljedica iscrpljenosti memorije, iskrivljenja podataka, problema sa serijalizacijom, isteka vremena mreže ili pogrešno konfiguriranih ovisnosti. Kvarovi izvršnih programa i padovi upravljačkih programa posebno su česti u loše podešenim aplikacijama.

Na primjer, često OutOfMemoryError ukazuje na nedovoljnu memoriju izvršitelja ili prekomjerno predmemoriranje. Pogreške nasumičnog dohvaćanja mogu ukazivati ​​na nestabilne čvorove ili uska grla na disku.

Razumijevanje obrazaca kvarova i proaktivno praćenje Spark UI metrike su ključne za održavanje stabilnih produkcijskih procesa.


45) Kako dizajnirate proizvod spreman za proizvodnju Spark prijava? Odgovorite s primjerima.

Spremno za proizvodnju Spark naglasak na primjeni skalabilnost, tolerancija grešaka, uočljivost i održivostUključuje pravilno evidentiranje, kontrolne točke, upravljanje konfiguracijom i automatizirano testiranje.

Na primjer, aplikacija za streaming trebala bi uključivati ​​strukturirano zapisivanje, robusno rukovanje pogreškama, kontrolne točke za oporavak i integraciju metrike s alatima za praćenje. Grupni poslovi trebali bi provjeravati ulazne podatke, rukovati evolucijom sheme i izbjegavati čvrsto kodirane konfiguracije.

Projektiranje Spark aplikacije s ovim principima osiguravaju pouzdanost, lakše otklanjanje pogrešaka i dugoročnu održivost u poslovnim okruženjima.


46) Objasnite unutarnji tijek izvršavanja Spark posao od predaje do završetka.

Kada Spark prijava se podnosi, Program za vozače inicijalizira aplikaciju i stvara logički plan izvršavanja na temelju transformacija definiranih u kodu. Spark ne izvršava odmah transformacije zbog lijenog izračuna. Izvršavanje počinje tek kada se pokrene akcija.

Logički plan se pretvara u Usmjereni aciklički graf (DAG), koji se zatim optimizira i razlaže na faze na temelju granica miješanja. Svaka faza sastoji se od više zadatke, gdje svaki zadatak obrađuje jednu particiju podataka.

Vozač predaje zadatke izvršitelji izvršava se na radnim čvorovima putem upravitelja klastera. Izvršitelji obrađuju zadatke paralelno i izvještavaju o rezultatima upravljačkom programu. Ako dođe do kvarova, Spark ponovno pokušava zadatke koristeći informacije o porijeklu. Ovaj model izvršavanja osigurava skalabilnost, toleranciju grešaka i učinkovitu distribuiranu obradu.


47) Što je generiranje koda u cijeloj fazi i zašto je važno?

Generiranje koda u cijeloj fazi je tehnika optimizacije performansi uvedena u okviru projekta Tungsten. Smanjuje opterećenje CPU-a kombiniranjem više Spark operatore u jedan generirani Java funkciju, eliminirajući pozive virtualnih metoda i prekomjerno stvaranje objekata.

Umjesto izvršavanja svakog operatora zasebno, Spark generira optimizirani bajtkod koji obrađuje podatke u uskim petljama. To poboljšava lokalnost predmemorije procesora i smanjuje pritisak na sakupljanje smeća.

Na primjer, upit koji uključuje filtriranje, projekciju i agregaciju može se sastaviti u jednu fazu izvršavanja. To značajno poboljšava Spark SQL performanse, posebno u analitičkim opterećenjima koja uključuju velike skupove podataka i složene upite.


48) Što su uske i široke transformacije u Spark?

Spark Transformacije se klasificiraju na temelju načina na koji su podaci distribuirani po particijama.

Vrsta transformacije Description Primjeri
Uzak Nije potrebno miješanje podataka map, filter, union
Širok Zahtijeva miješanje podataka groupByKey, join, reduceByKey

Uske transformacije omogućuju Spark do operacija cjevovoda unutar jedne faze, poboljšavajući performanse. Široke transformacije zahtijevaju miješanje podataka po mreži, što uvodi latenciju i opterećenje resursa.

Razumijevanje ove razlike ključno je za učinkovito pisanje Spark poslove, jer minimiziranje širokih transformacija dovodi do bržeg izvršavanja i smanjenog opterećenja klastera.


49) Kako se Spark nositi se s povratnim pritiskom u aplikacijama za streaming?

Protivpritisak je sposobnost sustava streaminga da prilagodi brzine unosa na temelju kapaciteta obrade. Spark različito se nosi s povratnim tlakom ovisno o modelu strujanja.

U naslijeđu Spark Streaming, povratni tlak dinamički prilagođava brzine unosa prijemnika koristeći povratne informacije iz vremena obrade. U strukturiranom streamingu, Spark oslanja se na mikroserijsko izvršavanje, ograničenja brzine i kontrole specifične za izvor, kao što su Kafkini pomaci.

Na primjer, prilikom obrade Kafka streamova, Spark može ograničiti broj zapisa potrošenih po seriji kako bi se spriječilo preopterećenje izvršitelja. To osigurava stabilnost tijekom skokova prometa i štiti nizvodne sustave od preopterećenja.


50) Što su UDF-ovi u Spark, a koji su im nedostaci?

Korisnički definirane funkcije (UDF) omogućuju programerima primjenu prilagođene logike na Spark Okviri podataka koji koriste jezike kao što su Python ili Scala. UDF-ovi su korisni kada su ugrađeni Spark Funkcije ne mogu izraziti složenu poslovnu logiku.

Međutim, UDF-ovi imaju značajne nedostatke. Oni zaobilaze SparkOptimizator Catalyst, koji sprječava optimizacije upita kao što su potiskivanje predikata i obrezivanje stupaca. Python UDF-ovi također uvode opterećenje serijalizacije između JVM-a i Python proces.

Spark Ugrađene SQL funkcije ili Spark SQL izrazi trebaju biti poželjniji. Za radna opterećenja kritična za performanse, izbjegavanje UDF-ova može rezultirati značajnim poboljšanjem vremena izvršavanja.


🔍 Vrhunski Apache Spark Pitanja za intervju sa stvarnim scenarijima i strateškim odgovorima

1) Što je Apache Sparki zašto je poželjniji u odnosu na tradicionalne okvire za velike podatke?

Očekivano od kandidata: Anketar želi procijeniti vaše razumijevanje Apachea Spark osnove i njegove prednosti u usporedbi sa starijim okvirima poput Hadoop MapReducea.

Primjer odgovora: apaš Spark je distribuirani okvir za obradu podataka dizajniran za brzo računanje u memoriji na velikim skupovima podataka. Poželjan je u odnosu na tradicionalne okvire jer podržava obradu u memoriji, što značajno smanjuje ulazno/izlazne operacije s diska i poboljšava performanse. Spark također pruža objedinjeni mehanizam za skupnu obradu, streaming, strojno učenje i obradu grafova, što ga čini fleksibilnijim i učinkovitijim za moderna podatkovna opterećenja.


2) Kako se Spark postići toleranciju grešaka u distribuiranom okruženju?

Očekivano od kandidata: Ispitivač procjenjuje vaše znanje o Sparkunutarnja arhitektura i kako se nosi s kvarovima.

Primjer odgovora: Spark postiže toleranciju grešaka korištenjem otpornih distribuiranih skupova podataka, poznatih i kao RDD-ovi. RDD-ovi prate informacije o porijeklu, što omogućuje Spark za ponovno izračunavanje izgubljenih particija u slučaju kvara čvora. U svojoj prethodnoj ulozi oslanjao sam se na ovaj mehanizam za besprijekoran oporavak podataka tijekom kvarova izvršitelja bez ručne intervencije.


3) Možete li objasniti razliku između RDD-ova, DataFramesa i Datasetova?

Očekivano od kandidata: Ispitivač želi provjeriti vaše razumijevanje Spark apstrakcije i kada ih koristiti.

Primjer odgovora: RDD-ovi su apstrakcija najniže razine i pružaju preciznu kontrolu, ali zahtijevaju više ručne optimizacije. DataFrames nude apstrakciju više razine sa shemom, što omogućuje Spark za optimizaciju upita pomoću Catalyst optimizatora. Skupovi podataka kombiniraju prednosti RDD-ova i DataFramesa nudeći sigurnost tipova uz optimizacije. Na prethodnoj poziciji prvenstveno sam koristio DataFrames jer su uravnotežili performanse i jednostavnost korištenja za analitiku velikih razmjera.


4) Kako optimizirate performanse Spark posao?

Očekivano od kandidata: Anketar traži praktično iskustvo u podešavanju i optimizaciji Spark aplikacija.

Primjer odgovora: Optimizacija performansi u Spark Uključuje tehnike poput pravilnog particioniranja, keširanja često korištenih skupova podataka i minimiziranja premještanja. Također uključuje podešavanje konfiguracijskih parametara poput memorije izvršitelja i jezgri. Na prethodnom poslu poboljšao sam performanse posla analizirajući planove izvršenja i prilagođavajući veličine particija kako bih bolje iskoristio resurse klastera.


5) Opišite situaciju u kojoj ste se morali nositi s velikim odstupanjem podataka u Spark.

Očekivano od kandidata: Anketar želi procijeniti vaše vještine rješavanja problema u stvarnim izazovima obrade podataka.

Primjer odgovora: Iskrivljenost podataka može značajno smanjiti performanse preopterećenjem određenih izvršitelja. To sam riješio korištenjem tehnika poput dodavanja ključeva soli i preraspodjele podataka kako bi se opterećenje ravnomjerno rasporedilo. U mojoj posljednjoj ulozi, rješavanje iskrivljenosti podataka smanjilo je vrijeme izvođenja posla s nekoliko sati na nekoliko minuta u kritičnom izvještajnom kanalu.


6) Kako se Spark Razlikuje li se streaming od strukturiranog streaminga?

Očekivano od kandidata: Anketar provjerava vaše znanje Sparkmogućnosti streaminga i evolucija.

Primjer odgovora: Spark Streaming koristi model mikro-serijske obrade, gdje se podaci obrađuju u malim serijama u fiksnim intervalima. Strukturirani streaming izgrađen je na Spark SQL mehanizam tretira podatke za strujanje kao neograničenu tablicu, pružajući bolju optimizaciju, toleranciju grešaka i jednostavnije API-je. Strukturirano strujanje općenito se preferira za nove aplikacije zbog svoje dosljednosti i jednostavnosti korištenja.


7) Kako rješavate probleme upravljanja memorijom u Spark?

Očekivano od kandidata: Ispitivač želi razumjeti vaše iskustvo s uobičajenim Spark izazove i rješavanje problema.

Primjer odgovora: Problemi upravljanja memorijom rješavaju se pravilnim konfiguriranjem memorije izvršitelja, izbjegavanjem nepotrebnog predmemoriranja i korištenjem učinkovitih formata podataka kao što je Parquet. Alati za praćenje poput Spark Korisničko sučelje pomaže u prepoznavanju uskih grla memorije, omogućujući proaktivne prilagodbe prije nego što poslovi zakažu.


8) Reci mi o situaciji kada je Spark Posao nije uspio u produkciji. Kako ste to riješili?

Očekivano od kandidata: Ispitivač procjenjuje vaš pristup rješavanju incidenata i otklanjanju pogrešaka.

Primjer odgovora: Kada Spark Posao nije uspio u produkciji, analizirao sam zapisnike izvršitelja i Spark Korisničko sučelje za identifikaciju uzroka. Problem je bio povezan s nedovoljnom alokacijom memorije, što je uzrokovalo ponovljene kvarove izvršitelja. Riješio sam ga prilagođavanjem postavki memorije i optimizacijom transformacija kako bih smanjio korištenje resursa.


9) Kako osiguravate kvalitetu podataka prilikom obrade podataka s Spark?

Očekivano od kandidata: Ispitivač želi uvid u vašu pažnju prema detaljima i prakse pouzdanosti podataka.

Primjer odgovora: Osiguravanje kvalitete podataka uključuje validaciju ulaznih podataka, rukovanje nultim ili oštećenim zapisima i primjenu sheme. Također implementiram provjere podataka i zapisivanje u svakoj fazi cjevovoda kako bih rano otkrio anomalije i održao povjerenje u nizvodnu analitiku.


10) Kako biste izabrali između Spark i ostale alate za obradu podataka za projekt?

Očekivano od kandidata: Ispitivač procjenjuje vaše donošenje odluka i arhitektonsko razmišljanje.

Primjer odgovora: Izbor ovisi o čimbenicima kao što su količina podataka, složenost obrade, zahtjevi za latencijom i integracija ekosustava. Spark idealan je za velike, distribuirane obrade i naprednu analitiku. Za jednostavnije slučajeve ili slučajeve korištenja u stvarnom vremenu, lakši alati mogu biti prikladniji. Uvijek procjenjujem poslovne zahtjeve uz tehnička ograničenja prije donošenja odluke.

Sažmite ovu objavu uz: