首页 > 解决方案 > 使用火花隐式时避免进口税

问题描述

在我的测试中,我有一个测试特征来提供火花上下文:

trait SparkTestTrait {
    lazy val spark: SparkSession = SparkSession.builder().getOrCreate()
}

问题是我需要在每个测试函数中添加一个导入:

test("test1) {
  import spark.implicits._
}

通过向 SparkTestTrait 添加以下内容,我设法将其减少到每个文件:

object testImplicits extends SQLImplicits {
  protected override def _sqlContext: SQLContext = spark.sqlContext
}

然后在实现文件的构造函数中:

import testImplicits._

但是,我希望将这些隐式导入所有实现 SparkTestTrait 的类(我不能让 SparkTestTrait 扩展 SQLImplicits,因为实现类已经扩展了一个抽象类)。

有没有办法做到这一点?

标签: scalaapache-sparkapache-spark-sql

解决方案


推荐阅读