名称
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中执行代码):
(1)查询所有数据;
(2)查询所有数据,并去除重复的数据;
(3)查询所有数据,打印时去除 id 字段;
(4)筛选出 age>30 的记录;
(5)将数据按 age 分组;
(6)将数据按 name 升序排列;
(7)取出前 3 行数据;
(8)查询所有记录的name 列,并为其取别名为 username;
(9)查询年龄 age 的平均值;
(10)查询年龄 age 的最小值。
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
(提示:使用DataFrames API判断字符串相等,应使用”===”操作符;使用SQL API判断字符串相等,应使用”=”操作符)
3、编程实现利用DataFrame读写Mysql数据库。教材P168第3题。可以在spark-shell中执行代码,也可以编写独立应用程序通过sbt编译打包运行,两种方式任选一种。
(1)在 MySQL 数据库中新建数据库lzl,再创建表lizhuolang,包含如表 6-2 所示的两行数据。
(2)配置 Spark 通过 JDBC 连接数据库 MySQL,编程实现利用 DataFrame 插入如表6-3 所示的两行数据到 MySQL 中,最后打印出 age 的最大值和 age 的总和。