当前位置:  开发笔记 > 编程语言 > 正文

如何实现ScalaTest FunSuite以避免样板Spark代码和导入含义

如何解决《如何实现ScalaTestFunSuite以避免样板Spark代码和导入含义》经验,为你挑选了0个好方法。

我尝试重构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

如何解决此问题或如何实现测试类?

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有