ПРИМЕЧАНИЕ.. Они ищут ответы, чтобы установить 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))
Итак.. да.. Я мог бы продолжить и изменить исходный код. Но я подозреваю, что вместо этого у меня отсутствует доступная ручка настройки для выполнения этой работы, которая не требует изменения исходного кода.