AWS EMR 使用 PySpark 连接 Mysql,但返回"requirement failed: The driver could not open a JDBC connection"



我正在AWS EMR上运行Spark应用程序。我尝试使用Spark SQL连接到MySQL数据库,如下所示:

with SparkSession.builder.appName('My test spark').getOrCreate() as spark:
dataframe_mysql = spark.read.format('jdbc').options(
url='mydb.host.com',
driver='com.mysql.cj.jdbc.Driver',
dbtable='mydb.my_table',
user='username',
password='password',
isolationLevel='NONE'
).load()

但是AWS EMR总是失败:

pyspark.sql.utils.IllegalArgumentException: requirement failed: The driver could not open a JDBC connection. Check the URL: mydb.host.com

我还根据我发现的文档尝试了不同格式的url参数:

jdbc:mysql:mydb.host.com
jdbc:mysql://mydb.host.com
mydb.host.com

但他们都失败了相同的信息。这段代码可以成功地连接到我本地Spark集群中的MySQL。在AWS EMR中连接MySQL的正确方法是什么?或者我如何获得更具体的失败信息?

我找到了答案,argurl的正确格式是jdbc:mysql://mydb.host.com/mydb

我使用的是emr-6.6.0和mysql-connector-java-8.0.29,我发现关于这一点有很多不同的说法,这真的让我很迷惑。也许是因为不同的版本有不同的用法?

相关内容