PySpark之MySQL连接

PySpark之MySQL连接

说明:使用Spark SQL读写数据库Spark SQL可以支持Parquet、JSON、Hive等数据源,并且可以通过JDBC连接外部数据源。

from findspark import init
init()
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession
import os
spark = SparkSession.builder.appName("read_mysql").getOrCreate()
sc = spark.sparkContext
sc

从MySQL中读入数据

- MySQL表中数据内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwdBBRAj-1620367249220)(./imgs/sql显示.png)]

jbdcDF = spark.read.format("jdbc")\
        .option("driver", "com.mysql.jdbc.Driver")\
        .option("url", "jdbc:mysql://localhost:3306/spark")\
        .option("dbtable", "student")\
        .option("user", "root")\
        .option("password", "123456").load()
jbdcDF.show()
+---+-----+------+---+
| id| name|gender|age|
+---+-----+------+---+
|  1|wanyu|     F| 25|
|  2|manyu|     M| 18|
|  1|wanyu|     F| 25|
|  1|wanyu|     F| 25|
+---+-----+------+---+

向MySQL中写入数据

iris = spark.read.csv("file://" + os.getcwd() + "/data/iris.csv", header=True)
iris.show(5)
+------------+-----------+------------+-----------+-------+
|sepal_length|sepal_width|petal_length|petal_width|species|
+------------+-----------+------------+-----------+-------+
|         5.1|        3.5|         1.4|        0.2| setosa|
|         4.9|        3.0|         1.4|        0.2| setosa|
|         4.7|        3.2|         1.3|        0.2| setosa|
|         4.6|        3.1|         1.5|        0.2| setosa|
|         5.0|        3.6|         1.4|        0.2| setosa|
+------------+-----------+------------+-----------+-------+
only showing top 5 rows
#写入数据库
prop = {}
prop['user'] = 'root'
prop['password'] = '123456'
prop['driver'] = "com.mysql.jdbc.Driver"
iris.write.jdbc("jdbc:mysql://localhost:3306/spark",'iris','append', prop)
  • 写入MySQL结果显示
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCteOPNv-1620367249224)(./imgs/sql读入.png)]

易错点

(1)Py4JJavaError: An error occurred while calling o92.load. : java.lang.Class…
解决方法:pyspark对Mysql数据库进行读写

(2)java.sql.SQLException: Access denied for user ‘root@localhost’@‘localhost’
解决方法:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;

参考

厦门大学林子雨老师主讲《Spark编程基础(Python版)》

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值