Spark,SparkSQL操作Mysql, 创建数据库和表

SparkSQL操作Mysql

1.查看系统内是否有mysql

[root@hadoop100 ~]# rpm -aq | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64

2.想我上面输出了有结果的即证明有,使用下列命令删除即可
[root@hadoop100 ~]# rpm -e --nodeps mariadb-libs

3.进入我们常用存放压缩包的地方
[root@hadoop100 ~]# cd /opt/software

4.将压缩包拖入后解压
[root@hadoop100 software]# tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar 

5.下载一系列插件
[root@hadoop100 software]# yum install -y perl perl-Data-Dumper per-Digest-MD5 net-tools libaio
6.后输入以下5条命令安装mysql

rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

7.安装后初始化数据库

[root@hadoop100 software]# mysqld --initialize --user=mysql

8.查看临时密码(eg:我的临时密码在最下面)
[root@hadoop100 software]# cat /var/log/mysqld.log

登录

改密码,代码如下

 set password =password("000000")

使root允许任意ip连接

mysql> update mysql.user set host='%' where user='root';

mysql> flush privileges;

查看已有的数据库。通过命令:show databases;

 创建数据库和表

-- 创建数据库
CREATE DATABASE spark;
-- 使用数据库
USE spark;

-- 创建表
create table person(id int, name char(20), age int);

-- 插入示例数据
insert into person values(1, 'jam', 20), (2,'judi', 21);
-- 查看所有数据
select * from person;

-- 退出
quit

查看数据库

假设我们有一个名为crops的数据库,包含以下字段: - crop_id: 作物ID - crop_name: 作物名称 - yield: 产量 - price: 价格 - timestamp: 时间戳 我们可以使用Spark SQLStreaming来处理查询这个的数据,具体步骤如下: 1. 创建SparkSession对象,并配置Spark Streaming上下文: ```python from pyspark.sql import SparkSession from pyspark.streaming import StreamingContext spark = SparkSession.builder.appName("CropsAnalysis").getOrCreate() ssc = StreamingContext(spark.sparkContext, batchDuration=1) ``` 2. 从数据库中读取crops的数据,创建一个DataFrame: ```python crops_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/mydatabase").option("dbtable", "crops").option("user", "myusername").option("password", "mypassword").load() ``` 3. 使用Spark SQL进行数据查询: ```python crops_df.createOrReplaceTempView("crops_view") # 查询产量最高的作物 yield_max = spark.sql("SELECT crop_name, MAX(yield) AS max_yield FROM crops_view GROUP BY crop_name ORDER BY max_yield DESC") yield_max.show() # 查询价格最高的作物 price_max = spark.sql("SELECT crop_name, MAX(price) AS max_price FROM crops_view GROUP BY crop_name ORDER BY max_price DESC") price_max.show() ``` 4. 使用Spark Streaming实时处理数据: ```python # 定义数据流 stream = ssc.socketTextStream("localhost", 9999) # 将数据流转换为DataFrame fields = ["crop_id", "crop_name", "yield", "price", "timestamp"] lines = stream.map(lambda x: x.split(",")) crops_stream_df = lines.map(lambda x: (int(x[0]), x[1], float(x[2]), float(x[3]), int(x[4]))).toDF(fields) # 将实时数据插入到数据库中 crops_stream_df.write.format("jdbc").option("url", "jdbc:mysql://localhost:3306/mydatabase").option("dbtable", "crops").option("user", "myusername").option("password", "mypassword").mode("append").save() # 查询实时数据 crops_stream_df.createOrReplaceTempView("crops_stream_view") stream_yield_max = spark.sql("SELECT crop_name, MAX(yield) AS max_yield FROM crops_stream_view GROUP BY crop_name ORDER BY max_yield DESC") stream_yield_max.writeStream.format("console").outputMode("complete").start() ``` 以上代码是一个简单的示例,可以根据具体需求进行修改扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值