2016-03-25 6 views
3

Я пытаюсь запустить пример программы SparkPi.scala в Netbeans. К сожалению, я довольно новичок в Spark и не смог успешно его выполнить.Запуск приложения Apache Spark в приложении IntelliJ Idea

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

Это мой build.sbt содержимое файла:

name := "SBTScalaSparkPi" 

version := "1.0" 

scalaVersion := "2.10.6" 

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

Это мой plugins.sbt содержимое файла:

logLevel := Level.Warn 

Это программа, которую я пытаюсь выполнить:

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 версия: 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 

Заранее спасибо за любую помощь.

+0

Вы прочитали сообщение об ошибке: «Главный URL должен быть установлен в вашей конфигурации». Является ли главный URL установленным в вашей конфигурации? –

+0

Спасибо за отзыв. Я не уверен, какой мастер-адрес должен быть установлен - для установки Hadoop. Изначит ли Спарк полагаться на Hadoop? Благодаря! – TJVR

+0

Возможный дубликат [Как установить главный адрес для искры 1.X примеров из командной строки] (http://stackoverflow.com/questions/24481399/how-to-set-master-address-for-spark-1-x -examples-from-command-line) – eliasah

ответ

8

Мастер URL должен быть установлен в вашей конфигурации

Вы должны установить spark.master в свой SparkConf. Есть только два обязательных параметра, которые вы должны установить - мастер и AppName, которые вы уже установили. Для получения дополнительной информации см. Initializing Spark section в документах.

Какой мастер следует использовать? См. Раздел Master URLs для всех вариантов. Самый простой вариант для тестирования - local, который запускает всю систему Spark (драйвер, мастер, рабочий) на вашем локальном компьютере без дополнительной настройки.

Чтобы установить мастер через API Scala:

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

В начале вашей программы просто отсутствует URL-адрес, указывающий на конечную точку запуска Spark. Вы можете указать это как параметр командной строки в InteliJ. Главный URL-адрес - это URL-адрес и порт, на котором запущен мастер Spark вашего кластера. Параметр примера командной строки выглядит следующим образом:

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

Смотрите ответ на этот вопрос подробно: How to set Master address for Spark examples from command line

Возможно, для первых сеансов вы просто хотите начать локальную среду Спарка автономной. Как получить, что работает хорошо документирована здесь: http://spark.apache.org/docs/latest/spark-standalone.html

Если вы получили это работает вы можете настроить ваш искру мастер конфигурации, как это:

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

Мастер URL должен быть установлен. Использование функции/метода setMaster («local») решило проблему.

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

Собственно, как @Matthias, так и @Tzach являются правильными. Вы должны выбрать свое решение, основанное на том, что вам легче (возможно, сейчас предпочитает первый вариант). Как только вы начнете работу с искровым заданием в реальном кластере, гораздо лучше не перекодировать «главный» параметр, чтобы вы могли запускать искровое задание в режиме нескольких кластеров (YARN, Mesos, Standalone с spark-submit) и все еще держать его выполняется локально с Netbeans (-Dspark.master = local [*])

Смежные вопросы