1
下面的代码会导致火花,无响应:运行斯卡拉星火与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"
)
应在文件中使用SBT代码斯卡拉星火是编译/运行的?
我认为代码是好的,它是从http://spark.apache.org/examples.html逐字采取的,但我不确定是否需要Hadoop WinUtils路径。
更新:“解决的办法是使用fork:=真主build.sbt” 这里是参考:Spark: ClassNotFoundException when running hello world example in scala 2.11
这将运行得很好,因为它是我的结束(我做出的唯一改变是文本文件+ winutils不同的路径)。它启动后,将'ShuffledRDD [4]在Application.scala:18'的reduceByKey处打印并关闭。我唯一立即看到的是,在转换结束时没有使用任何动作,即数据永远不会被计算并返回给驱动程序,代码只会生成具有几个转换的RDD。但是,这不应该导致应用程序挂起,尤其是不在单线程本地模式下(流式传输至少需要2个线程,但是您不会使用它)。 – alextsc
@alextsc你在Windows上运行?我正在使用Windows10 –
是的Windows 10专业版 – alextsc