代码之家  ›  专栏  ›  技术社区  ›  Jim Flood

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

  •  0
  • Jim Flood  · 技术社区  · 6 年前

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

    0 回复  |  直到 6 年前
        1
  •  0
  •   Alfilercio    6 年前

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

    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)
    
    推荐文章