mysql - 无法使用 jdbc 和 Spark 连接器从 databricks 群集连接到 Azure Database for MySQL 服务器

标签 mysql azure apache-spark azure-databricks azure-sql-server

我正在尝试使用 databricks 群集连接到 MySQL 服务器的 Azure 数据库。 我尝试使用下面描述的两种方法-

  1. 使用jdbc

    val jdbcHostname = "<serverName>.mysql.database.azure.com"
    val jdbcPort = 3306
    val jdbcDatabase = "<db>"
    val jdbcUrl = s"jdbc:mysql://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?useSSL=true&requireSSL=false"
    
    import java.sql.DriverManager
    val connection = DriverManager.getConnection(jdbcUrl, "<user>@<serverName>", "<password>")
    

但我收到错误消息 "Client with IP address 'SOME_IP_ADDRESS' is not allowed to connect to this MySQL server"

我将此 IP 添加到 Azure Database for MySQL 服务器的防火墙规则中,然后就可以访问了。但每次集群重新启动时,IP 地址都会发生变化并引发错误。 我不想"Allow access to Azure services"在 mySQL 服务器中,因为它也将允许来自另一个订阅的用户。

  • 使用 Spark 连接器 - 下载“com.microsoft.azure:azure-sqldb-spark:1.0.2”jar

    val config = Config(Map(
    "driver"         -> "org.mariadb.jdbc.Driver",
    "url"            -> "<serverName>.mysql.database.azure.com:3306",
    "databaseName"   -> "<db>",
    "dbTable"        -> "<dbtable>",
    "user"           -> "<user>@<serverName>",
    "password"       -> "<password>"
    ))
    val data = spark.read.sqlDB(config)
    
  • 但它抛出错误说 "java.lang.IllegalArgumentException: requirement failed: The driver could not open a JDBC connection. Check the URL: jdbc:sqlserver://<serverName>.mysql.database.azure.com:3306"

    我也尝试过这种方式-

        val df = spark.read.format("jdbc").option("driver", "org.mariadb.jdbc.Driver")
       .option("url", "jdbc:mysql://<serverName>.mysql.database.azure.com:3306/<db>?useSSL=true&requireSSL=false")
       .option("databaseName", "<db>")
       .option("dbTable", "<dbtable>")
       .option("user", "<user>@<serverName>")
       .option("password", "<password>")
       .load()
    

    但它也会抛出错误 "Client with IP address 'SOME_IP_ADDRESS' is not allowed to connect to this MySQL server"

    最佳答案

    不支持将 MySQL 的 Azure SQL 数据库作为 Azure Databricks 中的数据源。它不在列表中。

    enter image description here

    请引用:Data sources for Azure Databricks以及 @Jim Xu 为您提供的文档。

    希望这有帮助。

    关于mysql - 无法使用 jdbc 和 Spark 连接器从 databricks 群集连接到 Azure Database for MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60088273/

    相关文章:

    php - 如何在sql中选择下一行分页

    scala - 将 JSON 键/值对列表拆分为数据集中一行的列

    scala - 通过一些列值拆分 Spark 数据帧,然后独立于其他数据帧旋转每个生成的数据帧

    apache-spark - pyspark 中的 --files 选项不起作用

    php - 获取特定订单

    mysql 根据销售价格进行条件选择

    通过 Mint 上的两个 ssh 连接在 GUI 中连接 MySQL

    git - 推送代码时自动构建 VSTS

    visual-studio-2010 - Azure 项目模板在 Visual Studio 中不可见

    Windows Azure 日志记录 : WADLogsTable as Application logs?