Beste Antwort
Ich empfehle Ihnen, ältere Versionen des Spark-Codes zu lesen.
Betrachten Sie Version 0.5 veröffentlicht im Jahr 2012 apache / spark Zu diesem Zeitpunkt hatte Spark nur etwa 70 Quellcodedateien und alle diese Dateien waren klein. Sehen Sie sich hier den Quellcode von RDD an: Apache / Spark Alles ist so einfach und prägnant.
Beachten Sie auch, dass die Architektur von Spark nicht funktioniert. Es hat sich seitdem dramatisch verändert. Die Entwickler haben gerade eine Menge Fehlerbehandlung, Optimierungen und Integration in externe Technologien wie Yarn oder Kafka hinzugefügt.
Wenn Sie verstehen, wie Spark 2012 funktioniert hat, ist es kein Problem zu verstehen, wie Spark heute funktioniert.
Außerdem empfehle ich Ihnen, diese Hinweise zu lesen: JerryLead / SparkInternals . Sie bieten einen Überblick über die interne Architektur von Spark.
Antwort
Um auf die Antwort von Noam Ben-Ami zurückzugreifen – WENN Sie ein End-to-End-Benutzer sind, kann Spark ziemlich erschöpfend sein und schwer zu erlernen.
Selbst wenn Sie Bash, Python und SQL kennen, ist dies nur die Spitze des Eisbergs bei der Verwendung von Spark. Wenn Sie „End-to-End“ Spark gegen einen Python / SQL-Skriptanalysten einsetzen, müssen Sie viele Komponenten lernen, die an und für sich wichtige Themen sind.
Natürlich können Sie Spark lokal verwenden (Ihr Laptop) und ohne Hadoop, aber in der „realen Welt“ werden Sie Spark nicht so verwenden. Es ist schön, etwas über die Syntax zu lernen, aber machen Sie keinen Fehler, niemand wird Sie damit beauftragen, „Spark“ in diesem Kontext zu machen (* Wortspiel beabsichtigt).
Der ganze Grund für die Verwendung von Spark ist Leistung und Sie sitzen auf einem verteilten Dateisystem, auch bekannt als „Big Data“. Das heißt, wenn Sie Code für Ihre Spark-Jobs schreiben, verstehen Sie Dinge wie Partitionen, Knoten, Serialisierung, JVM, Vcores, Executoren, Speicher, Speicher und Festplatte, Shuffles, komprimierte Dateien, Spaltenformate (Parkett) und dergleichen Möglichkeit, Daten von beispielsweise S3 über RDDs, DataFrames, DataSets (nur Java / Scala) und Spark SQL in Ihren Enddatensatz zu verschieben.
Für mich ist dies sehr ähnlich, wenn jemand sagen würde, dass er es weiß. Excel “und dann würden Sie sie fragen, ob sie ein grundlegendes Makro von Grund auf neu schreiben könnten und sie bekommen das Reh im Scheinwerfer-Look.
Ein mögliches Unterfangen in Spark wäre:
- Aufbau Ihres Hadoop-Clusters (Knoten, Speicher, EC2-Instanzen usw.)
- YARN-Konfiguration (Knoten, Kerne, Instanzen, Executoren, Speicherverwaltung, Treiber, Overhead-Speicher, Broadcasting, im Speicher und weiter) Festplattenverwaltung usw.) – Jede dieser Funktionen kann Ihre Jobs hängen / beenden, und Sie kommen mit nur geringfügigen Datenmengen keinen Schritt weiter, wenn eine dieser Funktionen bei uns nicht funktioniert ll mit Ihren Daten.
- Spark RDDs-Dokumentation
- Spark DataFrames-Dokumentation
- Spark SQL-Dokumentation
- Sie werden unweigerlich Code schreiben # s 3–5, die die Probleme von # 2 aufdecken.
- An diesem Punkt werden Sie wahrscheinlich mindestens Java-Code debuggen und bei Verwendung von Python py4J-Gateway-Fehler zu Datentypproblemen führen mit Python und Streaming-Datenobjekten.
Viele Leute können Funktionen / Methoden für RDDs, DataFrames und Spark SQL in nur wenigen Minuten schreiben und wenn sie Erfahrung mit Python und SQL haben – vielleicht In wenigen Tagen können Sie sogar RDDs, DataFrames und SQL-Dokumentationen verschlingen. Wenn Ihr Spark-Job jedoch für einen Broadcast-, Executor-, Task- oder Speicherfehler beendet wird, spielt dies keine Rolle. Sie ziehen den Spark-Neoprenanzug an und tauchen tief in den Bauch von Spark [Java] ein.