Подтвердить что ты не робот

Как установить главный адрес для примеров Spark из командной строки

ПРИМЕЧАНИЕ.. Они ищут ответы, чтобы установить Spark Master при запуске примеров Spark, которые включают в себя нет изменения исходного кода, а скорее только параметры, которые могут быть сделанный из командной строки, если это вообще возможно.

Рассмотрим метод run() примера BinaryClassification:

  def run(params: Params) {
    val conf = new SparkConf().setAppName(s"BinaryClassification with $params")
    val sc = new SparkContext(conf)

Обратите внимание, что SparkConf не предоставил никаких средств для настройки SparkMaster.

При запуске этой программы из Intellij со следующими аргументами:

--algorithm LR --regType L2 --regParam 1.0 data/mllib/sample_binary_classification_data.txt

возникает следующая ошибка:

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)

Я также попытался добавить URL-адрес Spark Master в любом случае (хотя код, похоже, НЕ поддерживает его.)

  spark://10.213.39.125:17088   --algorithm LR --regType L2 --regParam 1.0 
  data/mllib/sample_binary_classification_data.txt

и

--algorithm LR --regType L2 --regParam 1.0 spark://10.213.39.125:17088
data/mllib/sample_binary_classification_data.txt

Оба не работают с ошибкой:

Error: Unknown argument 'data/mllib/sample_binary_classification_data.txt'

Для справки: синтаксический анализ параметров - ничего не делает с 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))

Итак.. да.. Я мог бы продолжить и изменить исходный код. Но я подозреваю, что вместо этого у меня отсутствует доступная ручка настройки для выполнения этой работы, которая не требует изменения исходного кода.

4b9b3361

Ответ 1

Вы можете установить мастер искры из командной строки, добавив параметр JVM:

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

Ответ 2

Если вы хотите сделать это из кода, вы можете использовать .setMaster(...) при создании SparkConf:

val conf = new SparkConf().setAppName("Simple Application")
                          .setMaster("spark://myhost:7077")

Ответ 3

Я загрузил Spark 1.3.0 и хотел протестировать образцы Java с помощью Eclipse Luna 4.4 и выяснил, что для запуска образцов Java вам необходимо добавить spark-assembly-1.3.0-hadoop2.4.0.jar в качестве библиотеки ссылок к вашему проекту Java.

Самый быстрый способ начать с Spark с использованием Java - запустить пример JavaWordCount. Чтобы исправить вышеуказанную проблему, добавьте следующую строку для конфигурации Spark:

SparkConf sparkConf = new SparkConf().setAppName("JavaWordCount").setMaster("local[2]").set("spark.executor.memory","1g");

И что, попробуйте запустить Eclipse, вы должны добиться успеха. Если вы видите ошибку ниже:

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:318)

просто игнорируйте, прокрутите консоль вниз, и вы увидите строку ввода текстового файла на строку, за которой следует счетчик слов.

Это быстрый способ начать работу с Spark с ОС Windows, не беспокоясь о том, чтобы установить Hadoop, вам просто нужны JDK 6 и Eclipse

Ответ 4

как упомянутый документ: setMaster(String master)

Главный URL-адрес для подключения, например local для локального запуска с одним потоком, local[4] для локального запуска с 4 ядрами или spark://master:7077 для запуска автономного кластера Spark.

Ответ 5

Итак, вот решение.

  • Установить по умолчанию по умолчанию с 1 потоком

    new SparkConf().setAppName("Ravi Macha").setMaster("local")
    
  • Или с аргументами (т.е. количеством строк в скобках)

    new SparkConf().setAppName("Ravi Macha").setMaster("local[2]")