最近開始學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版本:
然后去官網(wǎng)找對應的驅(qū)動,結(jié)果發(fā)現(xiàn)沒有我的這個版本??找了一會發(fā)現(xiàn)下面這個網(wǎng)站可以:mvnrepository
下載好壓縮包后,把里面的jar文件拖到spark安裝目錄下的/jars目錄下:

這次總該可以了吧!結(jié)果理想是美好的,現(xiàn)實總是殘酷的。。還是不可以
SPARK_CLASSPATH環(huán)境變量
多方查找資料后,因為網(wǎng)上基本上都是linux環(huán)境下的解決方案,我在下面的博客里找到了一個解決方法:
spark讀mysql數(shù)據(jù)

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

然后重啟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)境的小伙伴遇到同樣的問題可以少走一點彎路吧~