2016-12-05 1 views
0

Ich habe einen Vier-Knoten-Funke-Cluster. Ein Knoten ist sowohl Master als auch Slave, andere drei Slave-Knoten. Ich habe eine Beispielanwendung geschrieben, die Datei lädt und einen Datenrahmen erstellt und einige Spark-SQL ausführt. Wenn ich die Anwendung vorlege wie unten vom Master-Knoten, es produziert Ausgabe: -Laden einer Datei in Spark im Standalone-Cluster

./spark-submit /root/sample.py 

Aber wenn ich wie unten mit Master vorlege, heißt es „Datei nicht Fehler nicht existiert

./spark-submit --master spark://<IP>:PORTNO /root/sample.py 
.

ich bin ein RDD von Beispiel-Textdatei zu erstellen: -.

lines = sc.textFile("/root/testsql.txt"); 

muss ich die Datei auf allen Knoten kopieren müssen ?? Wie es für die Produktionssysteme funktionieren wird, wenn zB haben einige CDRS zu verarbeiten, woher sollte ich diese CDRS erhalten.

Antwort

3

Sie haben Recht, es ist nicht in der Lage, diese Datei zu lesen, weil sie nicht auf Ihrem Server existiert.

Sie müssen sicherstellen, dass die Datei über dieselbe URL/Pfad auf alle Knoten von Spark zugegriffen werden kann.

Das ist, wo verteiltes Dateisystem wie hdfs etwas einfacher macht, aber Sie können es auch ohne sie tun.

Wenn Sie dem Master einen Spark-Job übergeben, weist Master die erforderlichen Executoren und Worker zu. Jeder von ihnen wird versuchen, die Aufgabe zu parallelisieren, was sc.textFile ihm sagt. So muss der Dateipfad von allen Knoten aus zugänglich sein.

Sie können die Datei entweder auf allen Knoten am selben Speicherort bereitstellen oder stattdessen einen URL-basierten Speicherort zum Lesen der Datei verwenden. Grundlegend ist, dass die Datei von allen Knoten verfügbar und lesbar sein muss.

+0

..ich bin etwas verwirrt ..wenn ich eine Datei von 1000 Zeilen habe und ich werde es auf alle Standorte kopieren..do alle Sklaven arbeiten auf der gleichen Datei? Wie die Last zwischen ihnen ausgewogen ist ... Auch wenn ich einen geteilten Speicherort habe, wo ich 100 CDR-Dateien behalten werde..wie werden diese Dateien unter Sklaven verteilt? –

+1

Nun, ich habe noch nie eine Datei auf jeden Knoten kopiert, idealerweise sollten Sie dieselbe Datei für alle Knoten zugänglich machen, wie ich es zuvor erklärt habe. Bezüglich des Verteilens funktioniert es auf der Partition. Grundsätzlich denke es so, wenn es 1000 Zeilen in der Datei gibt und du sagst explizit lins.repartition (10). Es wird 10 parallele Partition von jeweils 100 Zeilen erstellen und mit 4 Arbeitern 4 von ihnen gleichzeitig verarbeiten. Wenn Sie keine Partition angeben, verwendet sie ihren internen Algorithmus zur Berechnung der Partitionsanzahl. –

+0

..danke für die Erklärung .. –