我尝试重构ScalaTest FunSuite测试,以避免样板代码初始化并销毁Spark会话.
问题是我需要导入隐式函数,但使用前/后方法只能使用变量(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
如何解决此问题或如何实现测试类?