首页 > 解决方案 > Spark SQL 中的多个 MySQL 服务器连接器

问题描述

我们有一个场景,我们必须连接来自不同来源的多个表。例如我们有

  1. table1,table2来自 mysql1
  2. table3,table4来自 mysql2
  3. table5来自 mysql3
  4. table6, table7,table8来自蜂巢

我们想在同一个查询中加入所有表。我们如何为所有 MySQL 连接创建单个连接器?

val jdbcDF = spark.read.format("jdbc").options(
  Map("url" ->  "jdbc:mysql://host1:3306/ontime?user=root&password='ert',
  "dbtable" -> "ontime.ontime_part",
  "fetchSize" -> "10000",
  "partitionColumn" -> "yeard", "lowerBound" -> "1988", "upperBound" -> "2016", "numPartitions" -> "28"
  )).load()
jdbcDF.createOrReplaceTempView("ontime")


val jdbcDF1 = spark.read.format("jdbc").options(
  Map("url" ->  "jdbc:mysql://host2:3306/ontime?user=root&password='xyz',
  "dbtable" -> "intime.intime_part",
  "fetchSize" -> "10000",
  "partitionColumn" -> "yeard", "lowerBound" -> "1988", "upperBound" -> "2016", "numPartitions" -> "28"
  )).load()
jdbcDF1.createOrReplaceTempView("intime")

就像,如果我们有 6 个 DB,我们需要做 6 次,还是有更好的方法来拥有一个配置文件并从那里连接?

标签: apache-sparkapache-spark-sql

解决方案


算了,这是不可能的。6 个 DB 是 6 个 jdbc。


推荐阅读