спровоцировать общий фрейм данных в границы параметров типа dataSet - PullRequest
0 голосов
/ 10 декабря 2018

Искра внутренне представляет 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]{

Следуя предложению - однако я не могу заставить его работать.

1 Ответ

0 голосов
/ 23 декабря 2018

Я прибегнул к:

trait SparkDatasetProvider[T, C <: BaseConfiguration] {

  def provide(spark: SparkSession, c: C): Dataset[T]

}
trait SparkDataFrameProvider[C <: BaseConfiguration] extends SparkDatasetProvider[Row, C] {
  def provide(spark: SparkSession, c: C): DataFrame

}

то есть к падению Product.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...