以下代码导致Spark无响应:
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 Spark是否可以使用文件中的sbt代码进行编译/运行?
我认为代码很好,它是从http://spark.apache.org/examples.html逐字逐句采用的,但我不确定是否需要Hadoop WinUtils路径。
更新:“解决方案是在主build.sbt中使用fork:= true” 以下是参考:Spark: ClassNotFoundException when running hello world example in scala 2.11
答案 0 :(得分: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")