1.show():

默认显示前20条数据,如需显示前5行,则用show(5)即可

2.printSchema()

输出表结构:字段名和字段数据类型等信息

3.read()

读取结构化数据文件,要根据数据文件类型的不同选用对应的函数:

csv——读取csv文件:通过option("header","true)和option("inferSchema","true“)来设置读入表头和自动推断数据类型

json---读取json文件

4.select()

查询指定字段,只需要将多个字段名放到参数的位置即可,多个字段名之间用逗号隔开

book.select("id","name").show()

5.where(条件表达式)---筛选满足指定条件的数据

获取字段值:$

  1. 统计书名包含“微积分”的书的数量

(1)筛选到书名包含“微积分”的书---满足指定条件的数where/filter(条件表达式)

book.where($"name".like("%微积分%"))

6.count---统计记录的条数

(2)统计(1)执行后满足条件的数据的条数

val num = book.where($"name".like("%微积分%")).count()
函数     概念举例
show()查看表结构内容

show() → 快速浏览表格的前20行

show(5) → 只看前5行

就像在Excel中滚动查看数据一样

printSchema查看表格结构       

文件名.printSchema()

// 示例:
book.printSchema()
student.printSchema()

read打开文件

CSV文件:spark.read.csv()

     1、需要告诉Spark:“第一行是标题”    (header=true)

      2、“请自动识别数据类型”(inferSchema=true)

JSON文件:spark.read.json()

 Spark会自动识别结构

select选择想看哪些列

文件名.select("列名1", "列名2", "列名3")

// 示例:
book.select("id", "name", "rating")
student.select("name", "age", "score")

where筛选特定条件的数据

文件名.where(条件)

// 示例:
// 筛选评分大于9的图书
book.where($"rating" > 9)

// 筛选书名包含"微积分"的图书
book.where($"name".like("%微积分%"))

// 筛选年龄大于18的学生
student.where($"age" > 18)

count统计满足条件的数据

文件名.count()

// 示例:
// 统计总图书数量
book.count()

// 统计微积分书籍数量
book.where($"name".like("%微积分%")).count()

limit限制数据条数

limit = "我要看多少条"

book.limit(5)      // 只看前5本书
book.limit(100)    // 只看前100条记录

orderBy排序

orderBy = "按什么顺序排队"

不加 .desc = 从低到高

        // 按价格从便宜到贵排列
        book.orderBy($"price")           // 升序

   加  .desc = 从高到低

        // 按评分从高到低排列  
      book.orderBy($"rating".desc)     // 降序

课堂练习:

案例一:

查询评分大于等于9分,小于等于9.5分,且书名包含“艺术”的书,只展示前10条的序号、书名和评分,按分数从高到低排列。

1.条件——where(1)评分大于等于9分,小于等于9.5分

                           (2) 书名包含“艺术”的书

2.限制数据的条数——limit

3.只要序号、书名和评分——select

4.按分数从高到低排列——orderBy

// 先读取数据创建book变量
val book = spark.read.option("header","true").csv("file:///opt/data/book.csv")
//数据筛选
val df1 = book.where($"rating" > 9 && $"rating" < 9.5 && $"name".like("%微积分%"))
//结果限制
val df2 = df1.limit(10)
// 列选择
val df3 = df2.select("id","name","rating")
//查询结果
 df3.orderBy($"rating".desc).show()

案例二:

1.上传student.json文件到vmware中master主机上
2.将student.json文件传给slave1和slave2

scp -r /opt/data/student.json slave1:/opt/data
scp -r /opt/data/student.json slave2:/opt/data

从 JSON 文件读取数据并进行查询操作:
  • 创建一个包含学生信息的 List:(1,"Tom",19,80), (2,"Bob",18,86), (3,"Jerry",20,76), (4,"Ken",19,65)
  • 使用 spark.read.json("file:///opt/data/student2.json") 读取本地 JSON 文件
  • 读取后自动推断结构,生成包含 age、gender、name、score 字段的 DataFrame
  • 使用 student2.show 展示所有数据内容,显示学生的年龄、性别、姓名和分数信息
  • 最后使用 student2.select("name","age","score").show(2) 正确选择指定列并显示前 2 行数据
  • 使用 student2.where($"age">20).show 成功筛选出年龄大于20岁的学生
  • 给每个学生的score字段值+5,并将加和后的字段重新命名为newScore

  • 最后使用 student2.orderBy($"score".desc).show(2) 按分数降序排列并显示前2行数据

更多推荐