【发布时间】:2018-02-04 23:07:05
【问题描述】:
我在客户端模式下使用带有 spark 独立集群的 python 2.7。
我想为 mysql 使用 jdbc,发现我需要使用 --jars 参数加载它,我的本地有 jdbc,并设法使用 pyspark 控制台加载它,如 here
当我使用 pyspark 在 ide 中编写 python 脚本时,我无法加载额外的 jar mysql-connector-java-5.1.26.jar 并继续获取
没有合适的司机
错误
在客户端模式下运行 python 脚本、在客户端模式下使用独立集群并引用远程主机时,如何加载其他 jar 文件?
编辑:添加了一些代码######################################### ############################### 这是我正在使用的基本代码,我在 python 中使用 pyspark 和 spark 上下文,例如我不直接使用 spark 提交,也不明白在这种情况下如何使用 spark 提交参数......
def createSparkContext(masterAdress = algoMaster):
"""
:return: return a spark context that is suitable for my configs
note the ip for the master
app name is not that important, just to show off
"""
from pyspark.mllib.util import MLUtils
from pyspark import SparkConf
from pyspark import SparkContext
import os
SUBMIT_ARGS = "--driver-class-path /var/nfs/general/mysql-connector-java-5.1.43 pyspark-shell"
#SUBMIT_ARGS = "--packages com.databricks:spark-csv_2.11:1.2.0 pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = SUBMIT_ARGS
conf = SparkConf()
#conf.set("spark.driver.extraClassPath", "var/nfs/general/mysql-connector-java-5.1.43")
conf.setMaster(masterAdress)
conf.setAppName('spark-basic')
conf.set("spark.executor.memory", "2G")
#conf.set("spark.executor.cores", "4")
conf.set("spark.driver.memory", "3G")
conf.set("spark.driver.cores", "3")
#conf.set("spark.driver.extraClassPath", "/var/nfs/general/mysql-connector-java-5.1.43")
sc = SparkContext(conf=conf)
print sc._conf.get("spark.executor.extraClassPath")
return sc
sql = SQLContext(sc)
df = sql.read.format('jdbc').options(url='jdbc:mysql://ip:port?user=user&password=pass', dbtable='(select * from tablename limit 100) as tablename').load()
print df.head()
谢谢
【问题讨论】:
-
打印您的 spark 提交以查看您如何使用 --jars 选项请检查我的答案here
-
@RamGhadiyaram 我不使用 spark 提交,我在 python 中使用 spark 上下文。查看编辑,我将添加一些代码供您查看
-
你能打印
sc.getConf().getAll()的输出吗? -
@Marie [(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-2017083'), (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')]
-
我已经编辑了我的答案,我相信问题不是来自 .jar 文件
标签: python mysql apache-spark jdbc pyspark