pyspark连接mysql

最近开始学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数据

14.png

但是我是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环境的小伙伴遇到同样的问题可以少走一点弯路吧~

转自:https://www.jianshu.com/p/0ff91b0d69af

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值