1
我試圖在火花運行多個單元測試和已經複製(和稍微適應)從所述源代碼中的位:單元測試implicits
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.scalatest.{BeforeAndAfterAll, Suite}
trait SharedSparkContext extends BeforeAndAfterAll {
self: Suite =>
@transient private var _sc: SparkContext = _
@transient private var _sqlContext: SQLContext = _
def sc: SparkContext = _sc
def sqlContext: SQLContext = _sqlContext
private var conf = new SparkConf(false)
override def beforeAll() {
super.beforeAll()
_sc = new SparkContext("local[*]", "Test Suites", conf)
_sqlContext = new SQLContext(_sc)
}
override def afterAll() {
try {
LocalSparkContext.stop(_sc)
_sc = null
} finally {
super.afterAll()
}
}
}
的LocalSparkContext類伴侶對象是隻需從源文件複製即可。
我想過使用它,如下所示,它告訴我,stable identifier required
因爲def
sqlContext
沒有成員implicits
:
class MySuite extends FlatSpec with SharedSparkContext {
import sqlContext.implicits._
// ...
}
我曾嘗試用下面的替換它,但給我的空指針例外:
class MySuite extends FlatSpec with SharedSparkContext {
val sqlCtxt = sqlContext
import sqlCtxt.implicits._
// ...
}
我使用星火1.4.1。我將parallelExecution in test := false
。
如何讓這個工作(不使用額外的軟件包)?
這樣,我得到了星火環境值,但一)我不能在配置混合和b)我不能讓配置關閉SparkContext後,所有的測試已運行。它的作品,但它不漂亮。 – Ian