当我加载MySQL JDBC驱动程序时,首先将其复制到驱动程序,然后通过dob
包含它,然后引用该jdbc驱动程序并将数据加载到数据框中成功。
--jars /path/to/jdbc/driver.jar
但是,如果我将jar加载到该确切jar文件的公开可用的https托管版本上,它就会失败。
$ pyspark --jars /path/to/jdbc/driver.jar
>>> rdd = sqlContext.read.jdbc(url="jdbc:mysql://someAWSDatabase.us-west-2.rds.amazonaws.com:3306?user=root&password=somepassword", table="spark.test", properties={"driver":"com.mysql.jdbc.Driver"})
According to the docs,您可以从各个地方提交罐子,从本地提交到http / https等。为什么会导致不同的行为?
更新:我还尝试运行两个$ pyspark --jars https://s3/path/to/jdbc/driver.jar
>>> rdd = sqlContext.read.jdbc(url="jdbc:mysql://someAWSDatabase.us-west-2.rds.amazonaws.com:3306?user=root&password=somepassword", table="spark.test", properties={"driver":"com.mysql.jdbc.Driver"})
py4j.protocol.Py4JJavaError: An error occurred while calling o37.jdbc.
: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
...
个作业,其中一个作为jdbc jar的jars路径的每个变体。 https jar提交引发了与上面相同的错误。