一、实验目的
(1)通过实验掌握 Spark SQL 的基本编程方法;
(2)熟悉 RDD 到 DataFrame 的转化方法;
(3)熟悉利用 Spark SQL 管理来自不同数据源的数据。
二、实验平台 操作系统: Ubuntu16.04 Spark 版本:2.1.0 数据库:MySQL
三、实验内容和要求
1.Spark 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 页 的最小值。
1.再MobaXter里
cd`/home/hadoop
创建
vim employee.json`
把数据粘上去
2.再IDEA上
创建
case object SparkSQLjibencaozuo
里面代码
package edu.hnuahe.wanqing.spark_6_3_CreateDataFrame import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._ case object SparkSQLjibencaozuo{ def main(args: Array[String]): Unit = { val spark = SparkSession.builder.appName("EmployeeData").getOrCreate() import spark.implicits._ // 加载 JSON 数据到 DataFrame //val employeeDF = spark.read.json("employee.json") val employeeDF = spark.read.json("file:///home/hadoop/employee.json") // (1) 查询所有数据 employeeDF.show() // (2) 查询所有数据,并去除重复的数据 val distinctEmployeeDF = employeeDF.distinct() distinctEmployeeDF.show() // (3) 查询所有数据,打印时去除 id 字段 employeeDF.select("name", "age").show() // (4) 筛选出 age>30 的记录 employeeDF.filter($"age" > 30).show() // (5) 将数据按 age 分组 employeeDF.groupBy("age").count().show() // (6) 将数据按 name 升序排列 employeeDF.orderBy($"name".asc).show() // (7) 取出前 3 行数据 employeeDF.limit(3).show() // (8) 查询所有记录的 name 列,并为其取别名为 username employeeDF.select($"name".as("username")).show()