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.
InformationsquelleAutor javadba | 2014-06-30