2016-03-15 3 views
1

ниже код вызывает Спарк зависание:Run Scala Спарк с SBT

System.setProperty("hadoop.home.dir", "H:\\winutils"); 

val sparkConf = new SparkConf().setAppName("GroupBy Test").setMaster("local[1]") 
val sc = new SparkContext(sparkConf) 

def main(args: Array[String]) { 

    val text_file = sc.textFile("h:\\data\\details.txt") 

    val counts = text_file 
     .flatMap(line => line.split(" ")) 
     .map(word => (word, 1)) 
     .reduceByKey(_ + _) 

    println(counts); 

} 

Я устанавливаю hadoop.home.dir для того, чтобы избежать ошибки, упомянутые здесь: Failed to locate the winutils binary in the hadoop binary path

Это как мой файл build.sbt выглядит следующим образом:

lazy val root = (project in file(".")). 
    settings(
    name := "hello", 
    version := "1.0", 
    scalaVersion := "2.11.0" 
) 


libraryDependencies ++= Seq(

      "org.apache.spark" % "spark-core_2.11" % "1.6.0" 

) 

Если Scala Спарк быть скомпилированы/исполняемым с помощью кода SBT в файле?

Я думаю, что код в порядке, он был принят дословно из http://spark.apache.org/examples.html, но я не уверен, требуется ли путь Hadoop WinUtils.

Update: «Решение было использовать вилку: = True в главном build.sbt» Здесь есть ссылка: Spark: ClassNotFoundException when running hello world example in scala 2.11

+0

Это работает так хорошо, как это на моем конце (только модификации, которые я сделал разные пути для текстового файла + winutils). Он запускается, печатает 'ShuffledRDD [4] в reduceByKey на Application.scala: 18' и выключается. Единственное, что я вижу сразу, это то, что в конце преобразований нет действий, т. Е. Данные никогда не вычисляются и не возвращаются драйверу, код генерирует только RDD с несколькими преобразованиями. Но это не должно вызывать зависание приложения, особенно не в локальном режиме с одним потоком (потоковая передача требует, по крайней мере, 2 потоков, но вы не используете это). – alextsc

+0

@alextsc вы работаете в Windows? Я использую Windows10 –

+0

Да, Windows 10 Pro – alextsc

ответ

1

Это содержание моего build.sbt. Обратите внимание, что если ваше интернет-соединение работает медленно, это может занять некоторое время.

version := "1.0" 

scalaVersion := "2.10.4" 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.6.1", 
    "org.apache.spark" %% "spark-mllib" % "1.6.1", 
    "org.apache.spark" %% "spark-sql" % "1.6.1", 
    "org.slf4j" % "slf4j-api" % "1.7.12" 
) 


run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run)) 

В главном я добавил это, однако это зависит от того, где вы разместили папку winutil.

System.setProperty("hadoop.home.dir", "c:\\winutil") 

How it looks

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