Comment définir le Maître de l'adresse pour le Spark exemples de ligne de commande
REMARQUE: Ils auteur est à la recherche de réponses pour créer l'Étincelle Maître lors de l'exécution de l'Étincelle exemples qui implique pas des modifications au code source, mais plutôt que les options qui peut être fait à partir de la ligne de commande si possible.
Prenons l'exemple de la méthode run() de la BinaryClassification exemple:
def run(params: Params) {
val conf = new SparkConf().setAppName(s"BinaryClassification with $params")
val sc = new SparkContext(conf)
Avis que le SparkConf ne constitue pas un moyen de configurer le SparkMaster.
Lors de l'exécution de ce programme à partir de l'Ide, avec les arguments suivants:
--algorithm LR --regType L2 --regParam 1.0 data/mllib/sample_binary_classification_data.txt
l'erreur suivante se produit:
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set
in your configuration
at org.apache.spark.SparkContext.<init>(SparkContext.scala:166)
at org.apache.spark.examples.mllib.BinaryClassification$.run(BinaryClassification.scala:105)
J'ai aussi essayé d'ajouter dans l'Étincelle Maître url de toute façon (même si le code ne semble PAS pour le soutenir ..)
spark://10.213.39.125:17088 --algorithm LR --regType L2 --regParam 1.0
data/mllib/sample_binary_classification_data.txt
et
--algorithm LR --regType L2 --regParam 1.0 spark://10.213.39.125:17088
data/mllib/sample_binary_classification_data.txt
Les deux ne fonctionnent pas avec l'erreur:
Error: Unknown argument 'data/mllib/sample_binary_classification_data.txt'
Pour référence, voici les options d'analyse qui n'a rien à SparkMaster:
val parser = new OptionParser[Params]("BinaryClassification") {
head("BinaryClassification: an example app for binary classification.")
opt[Int]("numIterations")
.text("number of iterations")
.action((x, c) => c.copy(numIterations = x))
opt[Double]("stepSize")
.text(s"initial step size, default: ${defaultParams.stepSize}")
.action((x, c) => c.copy(stepSize = x))
opt[String]("algorithm")
.text(s"algorithm (${Algorithm.values.mkString(",")}), " +
s"default: ${defaultParams.algorithm}")
.action((x, c) => c.copy(algorithm = Algorithm.withName(x)))
opt[String]("regType")
.text(s"regularization type (${RegType.values.mkString(",")}), " +
s"default: ${defaultParams.regType}")
.action((x, c) => c.copy(regType = RegType.withName(x)))
opt[Double]("regParam")
.text(s"regularization parameter, default: ${defaultParams.regParam}")
arg[String]("<input>")
.required()
.text("input paths to labeled examples in LIBSVM format")
.action((x, c) => c.copy(input = x))
Donc .. oui .. j'ai pu aller de l'avant et modifier le code source. Mais je pense plutôt que je suis absent une disponible bouton de réglage de précision pour faire ce travail qui n'implique pas de modifier le code source.
- En lisant les commentaires, vous dites que vous ne voulez pas de réponses que de modifier le code source. Vous "un peu" dire quelque chose à ce sujet, vous POURRIEZ modifier le code source, mais alors en gros, vous demandez des options pour résoudre le problème. Vous ne demandez jamais à votre question directe, ni ne vous règle le code source, mais vous ensuite crier à tout le monde qui répond à votre question, qui sont le long des lignes de "je pouvais aller de l'avant et modifier le code source", qui ouvre la porte et certainement n'est pas de la fermer. "Mais je pense plutôt que je suis absent de un disponible le bouton de réglage de précision pour faire ce travail." n'est pas une question, ni sur les règles de la source de la modification.
- J'ai édité la question pour être plus clair et éviter toute confusion.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir l'Étincelle maître de la ligne de commande en ajoutant le paramètre de JVM:
Si vous souhaitez obtenir ce fait à partir du code que vous pouvez utiliser
.setMaster(...)
lors de la création de laSparkConf
:Depuis longtemps MODIFIER (selon les commentaires)
Pour la session Spark 2.x +:
Ligne de commande (2.x) en supposant local autonome de cluster.
J'ai téléchargé Étincelle 1.3.0 et je voulais tester la java des échantillons à l'aide d'Eclipse Luna 4.4 et a trouvé que pour exécuter java des échantillons, vous devez ajouter spark-assembly-1.3.0-hadoop2.4.0.jar en tant que bibliothèque référencée pour votre projet Java.
Le moyen le plus rapide pour commencer avec Allumage à l'aide de Java est d'exécuter l'JavaWordCount exemple.
Pour corriger problème ci-dessus, ajoutez la ligne suivante pour l'Étincelle de configuration:
Et c'est tout, essayez d'exécuter à l'aide d'Eclipse, vous devriez obtenir le succès. Si vous voyez d'erreur ci-dessous:
il suffit de les ignorer, faire défiler la console vers le bas et vous verrez que votre entrée fichier texte ligne par ligne suivie par un compteur de mots.
C'est un moyen rapide pour obtenir commencé sur la Spark avec système d'exploitation Windows sans se soucier d'obtenir Hadoop installé, vous avez juste besoin du JDK 6 et Eclipse
que le document mentionné:
setMaster(String master)
Le maître URL de connexion, tels que
local
à exécuter localement avec un fil,local[4]
à fonctionner en local avec 4 cœurs, ouspark://master:7077
pour s'exécuter sur une Étincelle autonome cluster.Voici donc la solution.
Définir comme Local avec 1 thread par défaut
Ou avec des arguments (i.e. le nombre de threads entre parenthèses)