【发布时间】:2017-01-11 15:29:25
【问题描述】:
我尝试重构 ScalaTest FunSuite 测试以避免样板代码初始化和破坏 Spark 会话。
问题是我需要导入隐式函数,但使用 before/after 方法只能使用变量(var 字段),并且导入它需要一个值(val 字段)。
这个想法是每次测试执行都有一个新的干净的 Spark Session。
我尝试做这样的事情:
import org.apache.spark.SparkContext
import org.apache.spark.sql.{SQLContext, SparkSession}
import org.scalatest.{BeforeAndAfter, FunSuite}
object SimpleWithBeforeTest extends FunSuite with BeforeAndAfter {
var spark: SparkSession = _
var sc: SparkContext = _
implicit var sqlContext: SQLContext = _
before {
spark = SparkSession.builder
.master("local")
.appName("Spark session for testing")
.getOrCreate()
sc = spark.sparkContext
sqlContext = spark.sqlContext
}
after {
spark.sparkContext.stop()
}
test("Import implicits inside the test 1") {
import sqlContext.implicits._
// Here other stuff
}
test("Import implicits inside the test 2") {
import sqlContext.implicits._
// Here other stuff
}
但是在import sqlContext.implicits._这行我有一个错误
无法解析符号 sqlContext
如何解决这个问题或如何实现测试类?
【问题讨论】:
标签: scala apache-spark scalatest