pyspark調mysql報錯:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver


問題描述

在做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. 最后解決方法

  1. 復制mysql connect的jar包到 spark目錄下/jars/
cp mysql的jar包路徑 spark目錄下/jars/
# 根據自己的目錄調整


2. 切換到安裝spark的目錄

  1. 執行以下命令
./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

弊端: 只能單次使用,下次關閉spark的進程就沒有了。最好的辦法就是讓spark識別到的包,一勞永逸。但是,我嘗試了各種方法都不行。

解釋: 自己指定jar包的位置讓spark去加載,執行后進入spark的shell中,spark就加載了jar包.

成功截圖

總結:目前解決的方法還是很麻煩,等以后找到好的方法再更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM