有人写过spark数据源代理/工厂吗?

cwdobuhd  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(356)

我想找到一个spark自定义数据源实现,它本身只是基于动态配置从一些现有的数据源实现中选择并返回。例如,给定一个任意配置键“mydatasource”,在一种情况下它可能返回一个parquet数据源,在另一种情况下它可能返回一个avro数据源,具体取决于运行时的配置文件。
有人做过这个吗?

ltqd579y

ltqd579y1#

您不需要实现数据源,您可以在驱动程序中创建此逻辑来选择要读取的格式。例如:

val sparkSession = ...

trait Source

case class Parquet(path: String) extends Source
case class Jdbc(url: String, port: Int) extends Source

def readSource(s: Source)(spark: SparkSession): DataFrame = s match {
  case Parquet(path) => spark.read.parquet(path)
  case Jdbc(url, port) => ...
}

val aSourceFromConfig: Source = ...

val df: DataFrame = readSource(aSourceFromConfig)(spark)

相关问题