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

问题描述 投票:0回答:1

我想找到一个Spark自定义数据源实现,它本身只是基于动态配置从中选择并返回一些现有的数据源实现。例如,给定任意配置键“ MyDataSource”,在某种情况下,它可能会返回Parquet数据源,而在另一种情况下,它可能会返回Avro数据源,具体取决于运行时的配置文件。

有人已经这样做了吗?

scala apache-spark datasource
1个回答
0
投票

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.