問題描述
在做http://dblab.xmu.edu.cn/blog/2335/實驗時,做到最后一部分代碼的第20行時如下圖。
執行報錯。具體錯誤信息為:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
分析
pyspark通過調用mysql-connector-java-5.1.47.jar包去連接mysql,報錯信息是未找到包,只需要讓spark識別到mysql 的jar包就可以了。
解決方法
1. 把jar包放入 spark目錄下/jars/
無效
2. 調用第三方python庫:findspark 鏈接:https://github.com/minrk/findspark
無效
3. 修改python調用spark的部分
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)
無效
4. 最后解決方法
- 復制mysql connect的jar包到 spark目錄下/jars/
cp mysql的jar包路徑 spark目錄下/jars/
# 根據自己的目錄調整
2. 切換到安裝spark的目錄
- 執行以下命令
./bin/pyspark --jars 第一步保存的jar包路徑 --driver-class-path 第一步保存的jar包路徑
# 例如: ./bin/pyspark --jars /usr/local/spark/jars/mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar --driver-class-path /usr/local/spark/jars/mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar