SpaekSql函数

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)筛选到书名包含"微积分"的书---满足指定条件的数where/filter(条件表达式)

复制代码
book.where($"name".like("%微积分%"))

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

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

复制代码
val num = book.where($"name".like("%微积分%")).count()

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

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

(2) 书名包含"艺术"的书

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

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

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

复制代码
 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()
​

7.limit------限制数据的条数

8.orderBy------排序(默认是升序,如需要降序,需要加desc的后缀)

【课堂练习】

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

3.借助sparksql编程入口(Spark Session类)对象:spark,读取json文件

复制代码
val path = "file:///opt/data/student.json"
val student = spark.read.json(path)

4..查询学生的name,age,score,只要前两行数据

复制代码
student.select("name","age","score").show(2)
student.select("name","age","score").limit(2).show

5.给每个学生的score字段值+5,并将加和后的字段重新命名为newScore

复制代码
student.select($"name",$"score"+5 as "newScore").show

6.筛选出age大于20的学生信息

复制代码
student.where($"age">20).show

7.按照分数从高到低排序,找出前两名

复制代码
student.orderBy($"score".desc).show(2)
相关推荐
冰清-小魔鱼40 分钟前
各类数据存储结构总结
开发语言·数据结构·数据库
深藏bIue1 小时前
MongoDB 4.4.30安装、数据迁移
数据库·mongodb
benyuanone1 小时前
MySQL环境项目迁移成国产化达梦环境
数据库·mysql
胖者是谁1 小时前
EasyPlayerPro的使用方法
前端·javascript·css
北凉军1 小时前
java连接达梦数据库,用户名是其他库的名称无法指定库,所有mapper查询的都是以用户名相同的库内的表
java·开发语言·数据库
EndingCoder2 小时前
索引类型和 keyof 操作符
linux·运维·前端·javascript·ubuntu·typescript
liux35282 小时前
Web集群管理实战指南:从架构到运维
运维·前端·架构
尽兴-2 小时前
MySQL索引优化:从理论到实战
数据库·mysql·优化·b+树·索引·最左前缀
沛沛老爹2 小时前
Web转AI架构篇 Agent Skills vs MCP:工具箱与标准接口的本质区别
java·开发语言·前端·人工智能·架构·企业开发
ZKNOW甄知科技2 小时前
IT自动分派单据:让企业服务流程更智能、更高效的关键技术
大数据·运维·数据库·人工智能·低代码·自动化