微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scala:从具有无类型、无参数抽象方法的特征继承案例类

如何解决Scala:从具有无类型、无参数抽象方法的特征继承案例类

对于此示例,假设 spark: SparkSession 对象在范围内。我计划使用 InputSource 和 pureconfig 来轻松解析不同的配置设置:此 MWE 中的表或文件路径并返回数据帧。 loadDF 不需要接受任何参数,因为所需的一切都可以从案例类中获得。

import org.apache.spark.sql.DataFrame

object InputSource {

  sealed trait InputType {

    def loadDF: DataFrame
  }

  case class TableSource(tableName: String,filter: String) extends InputType {

    def loadDF: DataFrame = {

      spark.table(tableName).where(filter)
    }
  }

  case class FileSource(filePath: String,format: String,filter: String) extends InputType {

    def loadDF: DataFrame = {

      spark.read.format(format).load(filePath).where(filter)
    }
  }
}

我看过很多博客文章、关于多态性、特征、抽象方法和类的 Scala 教程和文档,以及很多 SO 文章。但是,我无法弄清楚这一点。

错误:特征不能从类 AnyRef 重新定义最终方法 def loadDF: 数据帧

我之前遇到过这种情况,抽象方法需要定义参数类型并且可以使用

sealed trait DeequChecks {

    def configConstraint[C <: Check](check: C): CheckWithLastConstraintFilterable
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。