Wie füge ich JAR-Dateien mit Spark-Submit zu einem Spark-Job hinzu?
Nov 09, 2024 pm 10:59 PMSo fügen Sie JAR-Dateien zu einem Spark-Job mit spark-submit hinzu
Hintergrund:
Spark-submit ist ein Befehlszeilentool zum Senden von Spark-Anwendungen. Es ermöglicht Benutzern, verschiedene Optionen anzugeben, einschließlich des Hinzufügens von JAR-Dateien zum Klassenpfad der Anwendung.
Klassenpfad und JAR-Verteilung:
- Klassenpfad: JAR-Dateien hinzugefügt über Spark-Submit-Optionen (--driver-class-path, --conf spark.driver.extraClassPath, --conf spark.executor.extraClassPath) ändern den Klassenpfad der Treiber- oder Executor-Knoten.
- JAR-Verteilung: Über --jars oder SparkContext.addJar-Methoden hinzugefügte JAR-Dateien werden automatisch an Worker-Knoten verteilt.
Optionsanalyse:
1. --jars vs SparkContext.addJar
-
Beide Optionen führen die gleiche Funktion des Hinzufügens von JAR-Dateien zum Klassenpfad der Anwendung aus. Sie werden jedoch in unterschiedlichen Kontexten verwendet:
- --jars: Wird während der Spark-Submit-Befehlszeile verwendet.
- SparkContext.addJar: Wird programmgesteuert innerhalb der Spark-Anwendung verwendet.
2. SparkContext.addJar vs SparkContext.addFile
- SparkContext.addJar: Fügt eine JAR-Datei hinzu, die vom Anwendungscode verwendete Abhängigkeiten enthält.
- SparkContext.addFile: Fügt eine beliebige Datei hinzu die möglicherweise nicht direkt vom Anwendungscode verwendet werden (z. B. Konfigurationsdateien, Daten). Dateien).
3. --driver-class-path vs --conf spark.driver.extraClassPath
- Aliase, die zusätzliche JAR-Dateien im Klassenpfad des Treiberknotens angeben.
4. --driver-library-path vs --conf spark.driver.extraLibraryPath
- Aliase, die Pfade zu zusätzlichen Bibliotheken auf dem Treiberknoten angeben.
5. --conf spark.executor.extraClassPath
- Gibt zusätzliche JAR-Dateien im Klassenpfad der Executor-Knoten an.
6. --conf spark.executor.extraLibraryPath
- Gibt Pfade zu zusätzlichen Bibliotheken auf den Executor-Knoten an.
Gleichzeitige Verwendung mehrerer Optionen:
Solange es keine Konflikte gibt, ist es sicher, mehrere zu verwenden Optionen zum Hinzufügen von JAR-Dateien gleichzeitig. Beachten Sie jedoch, dass JAR-Dateien nur dann in die extraClassPath-Optionen aufgenommen werden sollten, wenn sie sich im Klassenpfad befinden müssen.
Beispiel:
Der folgende Befehl demonstriert das Hinzufügen von JAR-Dateien Verwendung verschiedener Optionen:
spark-submit --jars additional1.jar,additional2.jar \ --driver-class-path additional1.jar:additional2.jar \ --conf spark.executor.extraClassPath=additional1.jar:additional2.jar \ --class MyClass main-application.jar
Zusätzliche Überlegungen:
- Mit --jars oder SparkContext.addJar hinzugefügte JAR-Dateien werden in das Arbeitsverzeichnis jedes Executor-Knotens kopiert.
- Der Speicherort des Arbeitsverzeichnisses ist normalerweise /var/run/spark/work .
- Vermeiden Sie die Duplizierung von JAR-Referenzen in verschiedenen Optionen, um unnötigen Ressourcenverbrauch zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie füge ich JAR-Dateien mit Spark-Submit zu einem Spark-Job hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

ICEBERG: Die Zukunft von Data Lake Tabellen

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

Wie kann ich funktionale Programmierungstechniken in Java implementieren?
