使用Spark SQL读取数据库
创始人
2024-04-16 15:23:25
0

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;

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

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...