6
Sparkセッションを初期化して破壊する定型コードを避けるために、ScalaTest FunSuiteテストをリファクタリングしようとしています。定型句を避けるためにScalaTest FunSuiteを実装する方法Sparkコードとインポートのimplicits
問題は、暗黙の関数をインポートする必要がありますが、前/後のアプローチでは変数(varフィールド)のみを使用でき、インポートするには値(valフィールド)が必要です。
アイデアは、テスト実行ごとに新しいクリーンなスパークセッションを持つことです。
をsqlContext解決できませんはシンボルがこの問題を解決する方法
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._
に私がエラーを持っている:
私はこのような何かをしようまたはテストクラスを実装する方法は?