最近开始学spark,本来想在虚拟机上学的,但是配置完之后老是报错,搜了半天也找不到解决方案,无奈只好回windows主机上学习了,用的语言是python(不是cs,只会python。。)
因为之前的windows上没装hive,所以就打算学习一下用pyspark连接mysql数据库,读写DataFrame。然而照着网上的博客敲代码之后,总是给我报错。看了看主要的错误是:
java.sql.SQLException: No suitable driver found for...
安装mysql的jdbc驱动
于是百度了一下,说是没安装mysql的jdbc驱动。OK,先在命令行上看一下自己的mysql版本: 11.png然后去官网找对应的驱动,结果发现没有我的这个版本??找了一会发现下面这个网站可以:mvnrepository
下载好压缩包后,把里面的jar文件拖到spark安装目录下的/jars目录下: 12.png 可是试了一下代码发现还是不行?wtf...继续百度找答案,看到有个答主说还要把这个驱动放到%JAVA_HOME%下的/jre/lib/ext/目录下,继续照做: 13.png这次总该可以了吧!结果理想是美好的,现实总是残酷的。。还是不可以
SPARK_CLASSPATH环境变量
多方查找资料后,因为网上基本上都是linux环境下的解决方案,我在下面的博客里找到了一个解决方法:
spark读mysql数据
但是我是windows环境,环境变量的设置可以用这个语法吗?(原谅我对linux也只是了解一点点,所以没这么试)所以我就尝试了一下,在系统高级设置的环境变量里,自己新建了一个SPARK_CLASSPATH变量,赋值就是上面的jar包路径:
15.png
然后重启kernal,结果发现连接成功了!打印了一下数据集,完美~代码在下面:
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()
运行结果如下:
+---+----------+----+------+------+---+------+----+------------------+
| 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
话说这好像是我的处女文。。写这篇文章的初衷是因为我找了半天的资料,关于windows环境的实在是太少了。。。也希望如果有和我一样坑爹的用win环境的小伙伴遇到同样的问题可以少走一点弯路吧~
网友评论