Искра внутренне представляет DataFrame
как Dataset[Row]
.Теперь мне нужно набрать:
SparkDatasetProvider[T <: Product, C <: BaseConfiguration]
SparkDataFrameProvider[C <: BaseConfiguration]
extends SparkDatasetProvider[Row, C]
Т.е. я хочу убедиться, что классы дел для Dataset[T]
и обычные Row
поддерживаются.Как я могу исправить:
type arguments [org.apache.spark.sql.Row,C] do not conform to trait SparkDatasetProvider's type parameter bounds
Поскольку я не знаю о суперклассе, который объединяет Row
и обычный case classes
.
edit
trait SparkDatasetProvider[T <: Encoder[T]] {
def provide(spark: SparkSession): Dataset[T]
}
trait SparkDataFrameProvider extends SparkDatasetProvider[Row, C] {
override def provide(spark: SparkSession): DataFrame
}
object FooProvider extends SparkDataFrameProvider{
override def provide(spark: SparkSession): DataFrame = null
}
final case class FooFeed(foo:Int, bar:String)
object FooProviderC extends SparkDatasetProvider[FooFeed]{
override def provide(spark: SparkSession): Dataset[FooFeed] = null
}
type parameter bounds [T <: org.apache.spark.sql.Encoder[T]]
object FooProviderC extends SparkDatasetProvider[FooFeed]{
Следуя предложению - однако я не могу заставить его работать.