gpt4 book ai didi

scala - 无法在 ScalaTest 中导入 Spark 隐式

转载 作者:行者123 更新时间:2023-12-03 23:08:27 26 4
gpt4 key购买 nike

我正在使用 ScalaTest 为 Spark 编写测试用例。

import org.apache.spark.sql.SparkSession
import org.scalatest.{BeforeAndAfterAll, FlatSpec}

class ClassNameSpec extends FlatSpec with BeforeAndAfterAll {
var spark: SparkSession = _
var className: ClassName = _

override def beforeAll(): Unit = {
spark = SparkSession.builder().master("local").appName("class-name-test").getOrCreate()
className = new ClassName(spark)
}

it should "return data" in {
import spark.implicits._
val result = className.getData(input)

assert(result.count() == 3)
}

override def afterAll(): Unit = {
spark.stop()
}
}

当我尝试编译测试套件时,它给了我以下错误:
stable identifier required, but ClassNameSpec.this.spark.implicits found.
[error] import spark.implicits._
[error] ^
[error] one error found
[error] (test:compileIncremental) Compilation failed

我不明白为什么我不能 import spark.implicits._在测试套件中。

任何帮助表示赞赏!

最佳答案

要进行导入,您需要一个“稳定标识符”,如错误消息所述。这意味着您需要有一个 val,而不是一个 var。
由于您将 spark 定义为 var,因此 scala 无法正确导入。

要解决这个问题,您可以简单地执行以下操作:

val spark2 = spark
import spark2.implicits._

或者改为将原始 var 更改为 val,例如:
lazy val spark: SparkSession = SparkSession.builder().master("local").appName("class-name-test").getOrCreate()

关于scala - 无法在 ScalaTest 中导入 Spark 隐式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44094108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com