名称

SparkSQL编程

目的

1.通过实验掌握 Spark SQL 的基本编程方法; 2.熟悉 RDD 到 DataFrame 的转化方法; 3.熟悉利用 Spark SQL 管理来自不同数据源的数据。

内容与结果分析

1.将下列 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 语句完成下列操作(在spark-shell中执行代码): image.png image.pngimage.pngimage.png (1)查询所有数据; image.png

(2)查询所有数据,并去除重复的数据; image.png (3)查询所有数据,打印时去除 id 字段; image.png (4)筛选出 age>30 的记录; image.png (5)将数据按 age 分组;

image.png

(6)将数据按 name 升序排列; image.png (7)取出前 3 行数据; image.png (8)查询所有记录的name 列,并为其取别名为 username; image.png (9)查询年龄 age 的平均值; image.png (10)查询年龄 age 的最小值。 image.png 2. 在Spark安装目录下建立一个文件stu.json,内容如下: {"name":"Michael", "age": 25, "gender": "male"} {"name":"Andy", "age":30, "gender", "female"} {"name":"Justin", "age":19, "gender": "female"} 为 stu.json 创建 DataFrame,分别使用Spark SQL API和Spark DataFrames API完成下列操作(在spark-shell中执行代码): (1)读取该文件(/usr/local/spark/stu.json) (2)筛选性别为”female”的记录并显示结果,给出执行语句与结果截图; (3)统计性别为”male”和”female”的人数并显示结果,给出执行语句与结果截图。 Spark DataFrames API image.png image.png

(提示:使用DataFrames API判断字符串相等,应使用”===”操作符;使用SQL API判断字符串相等,应使用”=”操作符) 3、编程实现利用DataFrame读写Mysql数据库。教材P168第3题。可以在spark-shell中执行代码,也可以编写独立应用程序通过sbt编译打包运行,两种方式任选一种。 (1)在 MySQL 数据库中新建数据库lzl,再创建表lizhuolang,包含如表 6-2 所示的两行数据。 image.png image.png (2)配置 Spark 通过 JDBC 连接数据库 MySQL,编程实现利用 DataFrame 插入如表6-3 所示的两行数据到 MySQL 中,最后打印出 age 的最大值和 age 的总和。 image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png