我发现下面的简单示例无限期地挂在scala repl中( sbt console
):
import org.apache.spark.sql._
val spark = SparkSession.builder().master("local[*]").getOrCreate()
val sc = spark.sparkContext
val rdd = sc.parallelize(1 to 100000000)
val n = rdd.map(_ + 1).sum
但是,下面的工作很好:
import org.apache.spark.sql._
val spark = SparkSession.builder().master("local[*]").getOrCreate()
val sc = spark.sparkContext
val rdd1 = sc.parallelize(1 to 100000000)
val rdd2 = rdd1.map(_ + 1)
val n = rdd2.sum
我很困惑,希望有人能解释一下。。。假设他们能重现“问题”。
这基本上只是杏仁内核的spark文档页面上提供的示例,在使用杏仁内核的jupyter中确实可以很好地工作。也, sbt "runMain Main"
适用于以下情况:
import org.apache.spark.sql._
object Main extends App {
val spark = SparkSession.builder().master("local[*]").getOrCreate()
val sc = spark.sparkContext
val rdd = sc.parallelize(1 to 100000000)
val n = rdd.map(_ + 1).sum
println(s"\n\nn: $n\n\n")
spark.stop
}
为了完整性,我使用了一个非常简单的 build.sbt
文件,如下所示:
name := """sparktest"""
scalaVersion := "2.12.10"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.6"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.6"
1条答案
按热度按时间vmdwslir1#
当我关闭控制台时,我注意到如下一系列错误:
这让我想到:
repl中的lambda(使用对象 Package 器)+并发=死锁#9076
似乎我的问题是同一件事,是针对Scala2.12的。将以下行添加到
build.sbt
似乎是公认的解决方法: