《Spark 编程基础(Scala 版)》第 6 章 Spark SQL 实验 5 Spark SQL 编程初级实践 (超级详细版)

一、实验目的

(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()

  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值