我有以下测试代码:
from pyspark import SparkContext, SQLContext
sc = SparkContext('local')
sqlContext = SQLContext(sc)
print('Created spark context!')
if __name__ == '__main__':
df = sqlContext.read.format("jdbc").options(
url="jdbc:mysql://localhost/mysql",
driver="com.mysql.jdbc.Driver",
dbtable="users",
user="user",
password="****",
properties={"driver": 'com.mysql.jdbc.Driver'}
).load()
print(df)
当我运行它时,我收到以下错误:
java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
在 Scala 中,可以通过导入 .jar 来解决这个问题mysql-connector-java
进入项目。
但是,在 python 中,我不知道如何告诉 pyspark 模块链接 mysql-connector 文件。
我已经看到这个问题通过类似的例子解决了
spark --package=mysql-connector-java testfile.py
但我不想要这个,因为它迫使我以一种奇怪的方式运行我的脚本。我想要一个全 python 解决方案,或者将文件复制到某处,或者在路径中添加一些内容。
您可以将参数传递给spark-submit
当创建你的sparkContext
before SparkConf
已初始化:
import os
from pyspark import SparkConf, SparkContext
SUBMIT_ARGS = "--packages mysql:mysql-connector-java:5.1.39 pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = SUBMIT_ARGS
conf = SparkConf()
sc = SparkContext(conf=conf)
或者您可以将它们添加到您的$SPARK_HOME/conf/spark-defaults.conf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)