【发布时间】:2017-08-27 11:45:02
【问题描述】:
我正在使用带有 ubuntu 的 python 2.7 并使用 sparkcontext 通过 python 脚本运行 spark
我的数据库是一个远程mysql,有用户名和密码。
我尝试使用此代码查询它
sc = createSparkContext()
sql = SQLContext(sc)
df = sql.read.format('jdbc').options(url='jdbc:mysql://ip:port?user=user&password=password', dbtable='(select * from tablename limit 100) as tablename').load()
print df.head()
得到这个错误
py4j.protocol.Py4JJavaError:调用 o32.load 时出错。 : java.sql.SQLException: 没有合适的驱动程序
我发现我需要 mysql 的 JDBC 驱动程序。
我从here下载了平台免费的一个
我尝试在启动 spark 上下文时使用此代码包含它
conf.set("spark.driver.extraClassPath", "/var/nfs/general/mysql-connector-java-5.1.43")
并尝试使用
安装它sudo apt-get install libmysql-java
在 master 机器上、db 机器上和运行 python 脚本但没有运气的机器上。
编辑2
#我尝试过使用
conf.set("spark.executor.extraClassPath", "/var/nfs/general/mysql-connector-java-5.1.43")
似乎由
的输出print sc.getConf().getAll()
这是
[(u'spark.driver.memory', u'3G'), (u'spark.executor.extraClassPath', u'file:///var/nfs/general/mysql-connector-java-5.1.43.jar'), (u'spark.app.name', u'spark-basic'), (u'spark.app.id', u'app-20170830'), (u'spark.rdd.compress', u'True'), (u'spark.master', u'spark://127.0.0.1:7077'), (u'spark.driver.port', u''), (u'spark.serializer.objectStreamReset', u'100'), (u'spark.executor.memory', u'2G'), (u'spark.executor.id', u'driver'), (u'spark.submit.deployMode', u'client'), (u'spark.driver.host', u''), (u'spark.driver.cores', u'3')]
它包含正确的路径,但我仍然收到相同的“无驱动程序”错误...
我在这里缺少什么?
谢谢
【问题讨论】:
标签: python mysql apache-spark pyspark pyspark-sql