寒假学习11-实验5-Spark SQL编程初级实践

Posted on 2022-01-11 20:06  ***Pepsi***  阅读(110)  评论(0编辑  收藏  举报

实验内容和要求

 

 

1Spark SQL基本操作

 

 

将下列 JSON 格式数据复制到 Linux 系统中,并保存命名为 employee.json。

 

 

{ "id":1 , "name":" Ella" , "age":36 } { "id":2, "name":"Bob","age":29 }

 

{ "id":3 , "name":"Jack","age":29 } { "id":4 , "name":"Jim","age":28 } { "id":4 , "name":"Jim","age":28 } { "id":5 , "name":"Damon" }

{ "id":5 , "name":"Damon" }

 

为 employee.json 创建 DataFrame,并写出 Scala 语句完成下列操作:

 

(1)     查询所有数据;

 

(2)     查询所有数据,并去除重复的数据;

 

(3)     查询所有数据,打印时去除 id 字段;

 

(4)     筛选出 age>30 的记录;

 

(5)     将数据按 age 分组;

 

(6)     将数据按 name 升序排列;

 

(7)     取出前 3 行数据;

 

(8)     查询所有记录的 name 列,并为其取别名为 username;

 

(9)     查询年龄 age 的平均值;

 

(10)  查询年龄 age 的最小值。

 

2.编程实现将 RDD转换为 DataFrame

 

 

源文件内容如下(包含 id,name,age):

 

 

1,Ella,36

 

2,Bob,29

 

3,Jack,29

 

 

请将数据复制保存到 Linux  系统中,命名为 employee.txt,实现从 RDD  转换得到

 

 

DataFrame,并按“id:1,name:Ella,age:36”的格式打印出 DataFrame 的所有数据。请写出程序代码。

 

 

3.编程实现利用 DataFrame读写 MySQL的数据

 

 

(1)在 MySQL 数据库中新建数据库 sparktest,再创建表 employee,包含如表 6-2 所示的两行数据。

 

6-2 employee表原有数据

 

id

name

gender

Age

1

Alice

F

22

 

 

 

 

2

John

M

25

 

 

 

 

 

(2)配置 Spark 通过 JDBC 连接数据库 MySQL,编程实现利用 DataFrame 插入如表 6-3 所示的两行数据到 MySQL 中,最后打印出 age 的最大值和 age 的总和。

 

6-3 employee表新增数据

 

id

name

gender

age

3

Mary

F

26

 

 

 

 

4

Tom

M

23

 

 

 

 

 

1).查询DataFrame的所有数据

 

 

2).查询所有数据,并且去除重复的数据

 

 

3). 查询所有数据,打印时去除id字段

 

 

4). 筛选age>20的记录

 

 

5).将数据按name分组

 

 

6). 将数据按name升序排列

 

 

7). 取出前3行数据

 

 

8). 查询所有记录的name列,并为其取别名为username

 

 

9). 查询年龄age的平均值

 

 

 

 

10). 查询年龄age的最小值

 

 

 

 

2.编程实现将RDD转换为DataFrame

:利用反射来推断包含特定类型对象的RDD的schema,适用对已知数据结构的RDD转换;

在目录rddtodf目录下新建simple.sbt

打包

 

 

打包有问题

直接在spark-shell中运行

 

 

3. 编程实现利用 DataFrame 读写 MySQL 的数据

1)在MySQL数据库中新建数据库sparktest,再建表employee,包含下列两行数据;

 

 

 

 

 

 

 

 

(2)配置Spark通过JDBC连接数据库MySQL,编程实现利用DataFrame插入下列数据到MySQL,最后打印出age的最大值和age的总和。

 

Copyright © 2024 ***Pepsi***
Powered by .NET 8.0 on Kubernetes