从 Pyspark EMR 访问 AWS RDS

Access AWS RDS from Pyspark EMR

我正在尝试使用 EMR 中的 Pyspark 访问 RDS 中的一些表。

我尝试在 /usr/share/java 中安装 JDBC 驱动程序,但看起来 spark 没有获取驱动程序

from pyspark.sql import SparkSession
jdbc_url = "jdbc:mysql://{0}:{1}/{2}".format(hostname, jdbcPort, dbname)

hostname = "rds_host"
jdbcPort = 3306
dbname = 'demo'
username = 'user'
password = 'pass'
table = "demo_table"

connectionProperties = {
  "user" : "user",
  "password" : "pass"
}

my_df = spark.read.jdbc(url=jdbc_url, table='SRC_CONNECTION', properties= connectionProperties)
my_df.show()




ERROR:
py4j.protocol.Py4JJavaError: An error occurred while calling o66.jdbc.
: java.sql.SQLException: No suitable driver`

在初始化 pyspark 时添加 mysql-connector-java-*.jar shell 使用 `--jars .

  • 对于 使用 --driver-classpath <jar_path> 参数。

  • 在连接属性中添加driver : "com.mysql.jdbc.Driver"