Windows下用pyspark連接mysql數(shù)據(jù)庫

最近開始學spark,本來想在虛擬機上學的,但是配置完之后老是報錯,搜了半天也找不到解決方案,無奈只好回windows主機上學習了,用的語言是python(不是cs,只會python。。)

因為之前的windows上沒裝hive,所以就打算學習一下用pyspark連接mysql數(shù)據(jù)庫,讀寫DataFrame。然而照著網(wǎng)上的博客敲代碼之后,總是給我報錯。看了看主要的錯誤是:

java.sql.SQLException: No suitable driver found for...

安裝mysql的jdbc驅(qū)動

于是百度了一下,說是沒安裝mysql的jdbc驅(qū)動。OK,先在命令行上看一下自己的mysql版本:
11.png

然后去官網(wǎng)找對應的驅(qū)動,結(jié)果發(fā)現(xiàn)沒有我的這個版本??找了一會發(fā)現(xiàn)下面這個網(wǎng)站可以:mvnrepository

下載好壓縮包后,把里面的jar文件拖到spark安裝目錄下的/jars目錄下:
12.png

可是試了一下代碼發(fā)現(xiàn)還是不行?wtf...繼續(xù)百度找答案,看到有個答主說還要把這個驅(qū)動放到%JAVA_HOME%下的/jre/lib/ext/目錄下,繼續(xù)照做:
13.png

這次總該可以了吧!結(jié)果理想是美好的,現(xiàn)實總是殘酷的。。還是不可以

SPARK_CLASSPATH環(huán)境變量

多方查找資料后,因為網(wǎng)上基本上都是linux環(huán)境下的解決方案,我在下面的博客里找到了一個解決方法:
spark讀mysql數(shù)據(jù)

14.png

但是我是windows環(huán)境,環(huán)境變量的設置可以用這個語法嗎?(原諒我對linux也只是了解一點點,所以沒這么試)所以我就嘗試了一下,在系統(tǒng)高級設置的環(huán)境變量里,自己新建了一個SPARK_CLASSPATH變量,賦值就是上面的jar包路徑:


15.png

然后重啟kernal,結(jié)果發(fā)現(xiàn)連接成功了!打印了一下數(shù)據(jù)集,完美~代碼在下面:

from pyspark.sql import SparkSession
spark = SparkSession.builder \
            .appName('My first app') \
            .getOrCreate()
url = 'jdbc:mysql://localhost:3306/exercise?characterEncoding=utf-8&autoReconnect=true'
properties ={'user':'root','password':'tqd950603'}
df = spark.read.jdbc(url=url,table="tips",properties=properties)
df.show()

運行結(jié)果如下:

+---+----------+----+------+------+---+------+----+------------------+
| id|total_bill| tip|   sex|smoker|day|  time|size|           tip_pct|
+---+----------+----+------+------+---+------+----+------------------+
|  0|     16.99|1.01|Female|    No|Sun|Dinner|   2|0.0594467333725721|
|  1|     10.34|1.66|  Male|    No|Sun|Dinner|   3| 0.160541586073501|
|  2|     21.01| 3.5|  Male|    No|Sun|Dinner|   3| 0.166587339362208|
|  3|     23.68|3.31|  Male|    No|Sun|Dinner|   2| 0.139780405405405|
|  4|     24.59|3.61|Female|    No|Sun|Dinner|   4| 0.146807645384303|
|  5|     25.29|4.71|  Male|    No|Sun|Dinner|   4| 0.186239620403321|
|  6|      8.77| 2.0|  Male|    No|Sun|Dinner|   2| 0.228050171037628|
|  7|     26.88|3.12|  Male|    No|Sun|Dinner|   4| 0.116071428571429|
|  8|     15.04|1.96|  Male|    No|Sun|Dinner|   2|  0.13031914893617|
|  9|     14.78|3.23|  Male|    No|Sun|Dinner|   2| 0.218538565629229|
| 10|     10.27|1.71|  Male|    No|Sun|Dinner|   2| 0.166504381694255|
| 11|     35.26| 5.0|Female|    No|Sun|Dinner|   4| 0.141803743618832|
| 12|     15.42|1.57|  Male|    No|Sun|Dinner|   2| 0.101815823605707|
| 13|     18.43| 3.0|  Male|    No|Sun|Dinner|   4| 0.162778079218665|
| 14|     14.83|3.02|Female|    No|Sun|Dinner|   2| 0.203641267700607|
| 15|     21.58|3.92|  Male|    No|Sun|Dinner|   2| 0.181649675625579|
| 16|     10.33|1.67|Female|    No|Sun|Dinner|   3| 0.161665053242982|
| 17|     16.29|3.71|  Male|    No|Sun|Dinner|   3| 0.227747084100675|
| 18|     16.97| 3.5|Female|    No|Sun|Dinner|   3| 0.206246317030053|
| 19|     20.65|3.35|  Male|    No|Sat|Dinner|   3| 0.162227602905569|
+---+----------+----+------+------+---+------+----+------------------+
only showing top 20 rows

話說這好像是我的處女文。。寫這篇文章的初衷是因為我找了半天的資料,關(guān)于windows環(huán)境的實在是太少了。。。也希望如果有和我一樣坑爹的用win環(huán)境的小伙伴遇到同樣的問題可以少走一點彎路吧~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容