2016-07-19 27 views
0

Ich bin neu in Hortonworks VM und ich wurde verwirrt. Ich versuche eine .jar-Datei auf Spark auszuführen. Normalerweise teste ich lokal auf Windows vonWie läuft .jar auf Spark auf Hortonworks VM?

spark-submit --driver-memory 4g --class en.name.ClassName %CODE%/target/program.jar

läuft, aber da ich Hive brauchen, ich dachte, dass ich auf eine Hortonworks VM bewegen würde lokal zu testen. Jetzt habe ich meine .jar und die Eingabedateien über Hortonworks Ambaris HDFS Files GUI in das HDFS (in das Verzeichnis /tmp/my_code) hochgeladen. Was als nächstes? Ich habe auch die Befehlszeile gefunden, aber wie greife ich auf meine .jar auf dem HDFS von der VM-Befehlszeile aus? Ich versuche

spark-submit --driver-memory 4g --class en.name.ClassName /tmp/my_code/program.jar aus der Sandbox kondolieren (die man auf http://127.0.0.1:4200/ standardmäßig [email protected]andbox „Shell in a Box“ ausgeführt wird) ausgeführt werden, die nicht funktioniert. Es besagt, dass das .jar nicht existiert. Wie kann ich die VM darauf hinweisen, die .jar-Datei in HDFS zu verwenden? Vielen Dank!

Antwort

1

JAR sollte auf lokalem Dateisystem NICHT in hdfs sein. Nur die Eingabedatei sollte in hdfs sein. so sollte /tmp/my_code/program.jar Pfad lokal sein, und das, warum Sie diesen Fehler sehen: the .jar does not exists

wenn Sie Lauf diesen Befehl ein:

>spark-submit --help 

Sie sehen:

--jars JARS Comma-separated list of local jars to include on the driver 
       and executor classpaths. 

Update: Accroding zu Documentations:

application-jar: Path to a bundled jar including your application and all dependencies. The URL must be globally visible inside of your cluster, for instance, an hdfs:// path or a file:// path that is present on all nodes.

so,

wenn Glas ist auf hdfs:

spark-submit --driver-memory 4g --class en.name.ClassName hdfs://target/program.jar

wenn Glas auf lokal ist:

spark-submit --driver-memory 4g --class en.name.ClassName /target/program.jar

OR

spark-submit --driver-memory 4g --class en.name.ClassName file://target/program.jar

+0

Hmm. Okay, ich werde es versuchen. In diesem Fall wie gebe ich den Pfad zu den Dateien in Hadoop in meinem Code an? Also lese ich es wie 'DataFrame df = sqlContext.read(). Json ("? Pfad? ");', Was in '' Pfad? '? Wie lege ich fest, aus HDFS zu lesen? Setze ich einfach "hdfs: // tmp/my_data/*. Json"? –

+0

Ja, Sie können 'hdfs: /' oder '/ tmp/my_data/*. Json' für die hdfs-Eingabedatei verwenden. Für die Verwendung der lokalen Eingabedatei müssen Sie 'file: /' angeben, aber ich denke, im Falle von hdfs-Dateien brauchen Sie nicht 'hdfs: /' im Pfad, aber es ist eine gute Übung, sie zu verwenden. –