Próbuję refakturować test ScalaTest FunSuite, aby uniknąć kodu na płycie, aby zainicjować i zniszczyć sesję Spark.Jak zaimplementować ScalaTest FunSuite, aby uniknąć bojlerów Kod Spark i implikowanie implikacji
Problem polega na tym, że potrzebuję funkcji niejawnych importu, ale używając podejścia przed/po można stosować tylko zmienne (pola var), a do importowania konieczna jest wartość (pola val).
Chodzi o to, aby każda sesja testowa miała nową czystą sesję Spark.
staram się zrobić coś takiego:
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
}
Ale w linii import sqlContext.implicits._
mam błąd
Nie można rozwiązać symbol SqlContext
Jak rozwiązać ten problem lub jak zaimplementować klasę testów?