ниже код вызывает Спарк зависание: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
Это работает так хорошо, как это на моем конце (только модификации, которые я сделал разные пути для текстового файла + winutils). Он запускается, печатает 'ShuffledRDD [4] в reduceByKey на Application.scala: 18' и выключается. Единственное, что я вижу сразу, это то, что в конце преобразований нет действий, т. Е. Данные никогда не вычисляются и не возвращаются драйверу, код генерирует только RDD с несколькими преобразованиями. Но это не должно вызывать зависание приложения, особенно не в локальном режиме с одним потоком (потоковая передача требует, по крайней мере, 2 потоков, но вы не используете это). – alextsc
@alextsc вы работаете в Windows? Я использую Windows10 –
Да, Windows 10 Pro – alextsc