2016-03-25 6 views
3

Ich versuche, das SparkPi.scala Beispielprogramm in Netbeans auszuführen. Leider bin ich Spark neu und konnte es nicht erfolgreich ausführen.Ausführen von Apache Spark Beispielanwendung in IntelliJ Idee

Meine Präferenz ist, nur in Netbeans zu arbeiten und von dort auszuführen. Ich weiß, dass Funken auch von der Zündungskonsole ausgeführt werden können - ich ziehe es jedoch vor, diesen Ansatz nicht zu wählen.

Das ist mein build.sbt Dateiinhalt:

name := "SBTScalaSparkPi" 

version := "1.0" 

scalaVersion := "2.10.6" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1" 

Das ist mein plugins.sbt Dateiinhalt:

logLevel := Level.Warn 

Dies ist das Programm, das ich auszuführen versuche:

import scala.math.random 

import org.apache.spark.SparkContext 
import org.apache.spark.SparkConf 

/** Computes an approximation to pi */ 
object SparkPi { 
    def main(args: Array[String]) { 
    val conf = new SparkConf().setAppName("Spark Pi") 
    val spark = new SparkContext(conf) 
    val slices = if (args.length > 0) args(0).toInt else 2 
    val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow 
    val count = spark.parallelize(1 until n, slices).map { i => 
     val x = random * 2 - 1 
     val y = random * 2 - 1 
     if (x*x + y*y < 1) 1 else 0 
     }.reduce(_ + _) 
    println("Pi is roughly " + 4.0 * count/n) 
    spark.stop() 
    } 
} 

JDK-Version: 1.8.

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 
16/03/25 07:50:25 INFO SparkContext: Running Spark version 1.6.1 
16/03/25 07:50:26 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
16/03/25 07:50:26 ERROR SparkContext: Error initializing SparkContext. 
org.apache.spark.SparkException: A master URL must be set in your configuration 
at org.apache.spark.SparkContext.<init>(SparkContext.scala:401) 
at SparkPi.main(SparkPi.scala) 
16/03/25 07:50:26 INFO SparkContext: Successfully stopped SparkContext 
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration 
at org.apache.spark.SparkContext.<init> 
at SparkPi$.main(SparkPi.scala:28) 
at SparkPi.main(SparkPi.scala) 
Process finished with exit code 1 
für jede Hilfe

Vielen Dank im Voraus:

Der Fehler, den ich bekommen, wenn Sie den Code auszuführen versucht, wird unten gegeben.

+0

Haben Sie die Fehlermeldung gelesen: "In Ihrer Konfiguration muss eine Master-URL eingestellt sein". Ist eine Master-URL in Ihrer Konfiguration festgelegt? –

+0

Danke für die Rückmeldung. Ich bin mir nicht sicher, welche Master-URL für die Hadoop-Installation festgelegt werden soll. Benutzt Spark dann Hadoop? Vielen Dank! – TJVR

+0

Mögliches Duplikat von [So legen Sie die Master-Adresse für Funke 1.X-Beispiele über die Befehlszeile fest] (http://stackoverflow.com/questions/24481399/how-to-set-master-address-for-spark1-x -examples-from-command-line) – eliasah

Antwort

8

Eine Master-URL muss in der Konfiguration eingestellt wird

Sie müssen eine spark.master in Ihrer SparkConf setzen. Es gibt nur zwei obligatorische Parameter, die Sie festlegen müssen - den Master und den AppName, die Sie bereits festgelegt haben. Weitere Informationen finden Sie unter Initializing Spark section in der Dokumentation.

Welchen Master sollten Sie verwenden? Siehe Abschnitt Master URLs Abschnitt für alle Optionen. Die einfachste Testoption ist local, die ein ganzes Spark-System (Treiber, Master, Worker) auf Ihrem lokalen Computer ohne zusätzliche Konfiguration ausführt.

Um den Master durch die Scala API gesetzt:

val conf = new SparkConf().setAppName("Spark Pi").setMaster("local") 
val spark = new SparkContext(conf) 
1

Der Start Ihres Programms fehlt nur die URL, die auf den Spark-Master-Endpunkt verweist. Sie können dies als einen Befehlszeilenparameter in InteliJ angeben. Die Master-URL ist die URL und der Port, an dem der Spark-Master Ihres Clusters ausgeführt wird. Ein Beispiel Kommandozeilenparameter wie folgt aussieht:

-Dspark.master=spark://myhost:7077 

für weitere Einzelheiten zu dieser Frage die Antwort Siehe: How to set Master address for Spark examples from command line

Vielleicht für die ersten Läufe Sie wollen einfach nur eine lokale Funken eigenständigen Umgebung starten. Wie diese zum Laufen zu bringen ist gut dokumentiert: http://spark.apache.org/docs/latest/spark-standalone.html

Wenn Sie das Laufen Sie bekommen Ihre Funken Master Config wie dieses Setup:

-Dspark.master=spark://localhost:7077 
0

Der Master-URL festgelegt werden müssen. Mit der Funktion/Methode setMaster ("local") wurde das Problem gelöst.

val conf = new SparkConf().setAppName("Spark Pi").setMaster("local") 
val spark = new SparkContext(conf) 
0

In der Tat haben @Matthias und @Tzach Recht. Sie sollten Ihre Lösung basierend auf dem auswählen, was für Sie einfacher ist (vielleicht bevorzugen Sie jetzt die erste Option). Sobald Sie Ihren Funke-Job auf einem echten Cluster starten, ist es viel besser, den "Master" -Parameter nicht fest zu codieren, so dass Sie Ihren Funke-Job im Multi-Cluster-Modus (YARN, Mesos, Standalone mit spark-submit) ausführen und ihn weiterhin behalten können läuft lokal mit Netbeans (-Dspark.master = local [*])

Verwandte Themen