Cel mai bun răspuns
Vă sugerez să citiți versiuni mai vechi ale codului Spark.
Luați în considerare versiunea 0.5 lansat în 2012 apache / spark La acel moment Spark avea doar aproximativ 70 de fișiere de cod sursă și toate aceste fișiere erau mici. Aruncați o privire la codul sursă al RDD aici: apache / spark Totul este atât de simplu și de concis.
De asemenea, rețineți că arhitectura Spark nu are De atunci s-a schimbat dramatic. Dezvoltatorii tocmai au adăugat o mulțime de gestionare a erorilor, optimizări și integrare cu tehnologii externe precum Yarn sau Kafka.
Când înțelegeți cum a funcționat Spark în 2012, nu ar fi o problemă să înțelegeți cum funcționează Spark astăzi.
În plus, vă sugerez să citiți aceste note: JerryLead / SparkInternals . Acestea oferă o imagine de ansamblu asupra arhitecturii interne a Spark.
Răspuns
Pentru a ne întoarce la răspunsul lui Noam Ben-Ami – DACĂ ești un utilizator end-to-end Spark poate fi destul de exhaustiv și greu de învățat.
Chiar dacă știi Bash, Python și SQL, acesta este doar vârful aisbergului utilizării Spark. Dacă mergeți „de la cap la cap” Spark față de un analist de scripturi Python / SQL, are multe componente care sunt în sine subiecte mari de învățat.
Sigur, puteți utiliza Spark local (laptopul dvs.) și fără Hadoop, dar în „lumea reală” nu veți folosi Spark așa. Este plăcut să aflați o parte din sintaxă, dar nu vă faceți nicio greșeală, nimeni nu vă va angaja să faceți „Spark” în acel context (* joc de cuvinte).
Întregul motiv pentru care folosiți Spark este performanța și vă așezați deasupra unui sistem de fișiere distribuit, cunoscut sub numele de „Big Data”. Asta înseamnă că atunci când scrieți cod pentru lucrările dvs. Spark, înțelegeți lucruri precum partiții, noduri, serializare, JVM, vcores, executori, memorie, memorie și disc, amestecări, fișiere comprimate, formate coloane (parchet) și altele de-a lungul modalitate de a muta datele de la S3 prin RDD-uri, DataFrames, DataSets (numai Java / Scala) și Spark SQL la setul de date final.
Pentru mine, acest lucru este la fel ca atunci când cineva ar spune că știe „ Excel ”și apoi i-ai întreba dacă ar putea scrie o macro de bază de la zero și vor căpăta cerbul în faruri.
O posibilă aventură în Spark ar include:
- Construirea cluster-ului dvs. Hadoop (noduri, memorie, instanțe EC2 etc.)
- configurație YARN (noduri, nuclee, instanțe, executanți, gestionarea memoriei, drivere, memorie aeriană, difuzare, în memorie și pe gestionarea discurilor, etc) – oricare dintre acestea vă poate bloca / ucide slujbele și nu obțineți niciun pas mai departe, chiar și cu sarcini banale de date, dacă oricare dintre acestea nu funcționează Împreună cu datele dvs.
- Documentație Spark RDDs
- Documentație Spark DataFrames
- Documentare SQL Spark
- Inevitabil veți scrie cod în # 3-5 care vor expune problemele # 2.
- În acest moment probabil că veți depana cel puțin codul Java și, dacă utilizați Python, erorile de gateway py4J la problemele de tip date cu Python și obiecte de date în flux.
O mulțime de oameni pot scrie funcții / metode împotriva RDD-urilor, DataFrames și Spark SQL în doar câteva minute și dacă au ceva experiență cu Python și SQL – poate chiar înghite RDD-uri, DataFrames și documentație SQL în câteva zile – dar când jobul dvs. Spark va fi ucis pentru o difuzare, executant, sarcină sau o eroare de memorie – nimic din toate acestea nu va conta. Îți îmbraci costumul de baie Spark și mergi la o scufundare profundă în burta lui Spark [Java].