使用Spark SQL读取数据库
创始人
2024-03-15 19:53:30

1、首先需要安装MySQL,使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本:
sudo apt-get update #更新软件源
sudo apt-get install mysql-server #安装mysql

2、可以用如下命令启动、关闭、重启mysql服务器
service mysql start
service mysql stop
service mysql restart

3、 用启动命令启动MySQL,确认是否启动成功,mysql节点处于LISTEN状态表示启动成功
sudo netstat -tap | grep mysql

这里可能会提示:找不到命令

可以执行如下命令安装:
sudo apt-get install net-tools

然后再运行最上面命令(sudo netstat -tap | grep mysql)即可正常执行:

4、 设置mysql无密码登录以及解决利用sqoop导入MySQL中文乱码的问题(可以插入中文,但不能用sqoop导入中文)
执行如下命令:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]下添加如下两行信息,如下图
skip-grant-tables
character_set_server=utf8

修改完成后保存退出
在终端中执行如下命令重启mysql服务:
service mysql restart
5、 进入mysql shell界面
mysql -u root -p
这里遇到输入密码不用输入直接回车

然后就进入到MySQL shell界面了

6、 然后先修改root密码,依次输入如下两条语句:
flush privileges;

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
这里我将密码设置为了123456,方便后续起见,建议大家也如此设置。

7、 修改完之后按ctrl+D退出mysql,然后执行如下命令:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

将刚才增加的第一行注释掉或删除都可,然后保存退出

8、 然后输入命令 service mysql restart 重启MySQL;
重启完成后输入命令 mysql -u root -p
这里需要输入刚才设置的密码(123456),然后回车进入

9、 在mysql shell界面输入如下语句,查看mysql当前设置的编码,和下图一致即正常
show variables like “char%”;

10、在mysql shell中输入以下SQL语句完成数据库和表的创建
create database spark;
use spark;
create table student (id int(4), name char(20), gender char(4), age int(4));
insert into student values(1,‘Xueqian’,‘F’,23);
insert into student values(2,‘Weiliang’,‘M’,24);
select * from student;

以上语句创建了一个名为spark的数据库,并在该数据库中创建了一个student表,向表里插入了两条记录

11、下载安装MySQL的JDBC驱动程序,这里已将压缩包放到群文件里,请自行下载,并将该压缩包解压到主目录下

12、 然后将解压出来的文件中的jar包放到spark的安装目录” /usr/local/spark/jars”下

13、 Ctrl+D退出刚才的mysql界面,然后在终端中输入如下两条命令启动pyspark:
cd /usr/local/spark

./bin/pyspark

14、 然后在pyspark中输入如下,输入完确认无误后回车:
jdbcDF=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()

15、 然后再输入,输入完后回车:
jdbcDF.show()
可以看到显示了刚才创建的student表,说明连接数据库成功

16、 然后按ctrl+D回到终端,输入如下命令创建一个代码文件InsertStudent.py,向spark.student表中插入两条新记录
cd ~
vim InsertStudent.py

17、 输入如下代码
#!/usr/bin/env python3
from pyspark.sql import Row
from pyspark.sql.types import *
from pyspark import SparkContext,SparkConf
from pyspark.sql import SparkSession
spark = SparkSession.builder.config(conf = SparkConf()).getOrCreate()

#下面设置模式信息
schema = StructType([StructField(“id”, IntegerType(), True),
StructField(“name”, StringType(), True),
StructField(“gender”, StringType(), True),
StructField(“age”, IntegerType(), True)])

#下面设置两条数据,表示两个学生的信息
studentRDD = spark
.sparkContext
.parallelize([“3 Rongcheng M 26”,“4 Guanhua M 27”])
.map(lambda x:x.split(" "))

#下面创建Row对象,每个Row对象都是rowRDD中的一行
rowRDD = studentRDD.map(lambda p:Row(int(p[0].strip()), p[1].strip(), p[2].strip(), int(p[3].strip())))

#建立起Row对象和模式之间的对应关系,也就是把数据和模式对应起来
studentDF = spark.createDataFrame(rowRDD, schema)

#写入数据库
prop = {}
prop[‘user’] = ‘root’
prop[‘password’] = ‘123456’
prop[‘driver’] = “com.mysql.jdbc.Driver”
studentDF.write.jdbc(“jdbc:mysql://localhost:3306/spark”,‘student’,‘append’, prop)

18、 保存并退出后输入如下命令运行该程序:
python3 ~/InsertStudent.py

19、 运行完毕后,输入如下命令进入mysql中查看是否插入数据
mysql -u root -p

20、 进入MySQL后输入如下两条语句:
use spark;
select * from student;

可以看到已经新插入了两条记录

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...