Spark SQL编程初级实践

参考链接

Spark编程: Spark SQL基本操作 2020.11.01_df.agg("age"->"avg")-CSDN博客

RDD编程初级实践-CSDN博客

Spark和Hadoop的安装-CSDN博客

1. Spark SQL基本操作

html 复制代码
{ "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文件

复制代码
sudo vim employee.json
cat employee.json

启动spark-shell

复制代码
cd /usr/local/spark/
./bin/spark-shell

1.1 查询所有数据

Scala 复制代码
import spark.implicits._
val df=spark.read.json("file:home/hadoop/下载/employee.json")
df.show()

import spark.implicits._是Spark的一个工具,帮助 我们将RDD 转换为DataFrame。

spark.read.json是 Apache Spark 中的一个方法,用于从 JSON 文件中读取数据并将其加载到 DataFrame 中。

df.show()用于显示DataFrame中的内容。

1.2 查询所有数据,并去除重复的数据

Scala 复制代码
df.distinct().show()

distinct()去重。

1.3 查询所有数据,打印时去除id字段

Scala 复制代码
df.drop(df("id")).show()

df.drop()用于删除DataFrame中指定的列。

1.4 筛选出age>30的记录

Scala 复制代码
df.filter(df("age")>30).show()

df.filter()用于根据指定条件过滤DataFrame中的行。

1.5 将数据按age分组

Scala 复制代码
df.groupBy(df("age")).count.show()

df.groupBy()用于根据指定的列对DataFrame进行分组。

df.count().show()用于显示分组后的DataFrame的内容。

1.6 将数据按name升序排列

Scala 复制代码
df.sort(df("name").asc).show()

df.sort()用于对DataFrame中的行进行排序(默认升序)。

升序asc

降序desc

这里"Ella"比"Bob"小是因为"Ella"字符串实际上是" Ella",所以他的第一个字符不是'E'而是' ',对应的ASCII,'E'是69,'B'是66,' '是32.

1.7 取出前3行数据

Scala 复制代码
df.show(3)

df.show(n)用于显示DataFrame的前n行。(n超出后会打印原始的大小)

1.8 查询所有记录的name列,并为其取别名为username

Scala 复制代码
df.select(df("name").as("username")).show()

df.select()用于选择DataFrame中指定的列。

1.9 查询年龄age的平均值

Scala 复制代码
df.agg("age"->"avg").show()

df.agg()用于对DataFrame进行聚合操作。

avg平均。

1.10 查询年龄age的最小值

Scala 复制代码
df.agg("age"->"min").show()

min最小。

2.编程实现将RDD转换为DataFrame

html 复制代码
1,Ella,36
2,Bob,29
3,Jack,29

3.编程实现利用DataFrame读写MySQL的数据

3.1 在MySQL数据库中新建数据库sparktest,再创建表employee

3.2 配置Spark通过JDBC连接数据库MySQL,编程实现利用DataFrame插入

相关推荐
Bioinfo Guy2 小时前
高分Panel复现系列|转录因子网络太乱?用模块框把重点圈出来
数据库·生物信息学·生信可视化
leisoo80972 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
AI产品测评官2 小时前
突破系统割裂困局:2026企业级AI招聘架构如何迈向“原生全流程”?
大数据·微服务·架构
梦梦代码精2 小时前
连锁品牌数字化:从门店扩张到用户资产运营的技术底座
大数据·人工智能·低代码·docker·开源·代码规范
ltl3 小时前
Disaggregated DB 合集:Socrates、PolarDB、Taurus 的共同模式
数据库
Blossom i5 小时前
大数据预处理与采集实验一:使用Python操作MySQL数据库
数据库·mysql
沐梯子5 小时前
具身智能爆发前夜的“数据饥渴”:2026机器人数据采集产业链选型解析
大数据·人工智能·机器人
ltqvibe6 小时前
企业数智化中台的五层架构——AI框架为什么需要纵向贯通
大数据·人工智能·架构
smilejingwei6 小时前
CodeBuddy+SQLazy 编写复杂 SQL 详解
sql·codebuddy·sqlazy
雾时之林6 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库