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插入

相关推荐
weelinking40 分钟前
【产品】00_产品经理用Claude实现产品系列介绍
数据库·人工智能·sql·数据挖掘·github·产品经理
2301_803934611 小时前
Go语言如何做网络爬虫_Go语言爬虫开发教程【指南】
jvm·数据库·python
秋92 小时前
windows中安装redis
数据库·redis·缓存
淘矿人2 小时前
Claude辅助DevOps实践
java·大数据·运维·人工智能·算法·bug·devops
Cosolar2 小时前
万字详解:RAG 向量索引算法与向量数据库架构及实战
数据库·人工智能·算法·数据库架构·milvus
想唱rap2 小时前
IO多路转接之poll
服务器·开发语言·数据库·c++
SeaTunnel3 小时前
AI 让 SeaTunnel 读源码和调试过时了吗?
大数据·数据库·人工智能·apache·seatunnel·数据同步
凯瑟琳.奥古斯特3 小时前
数据冗余与规范化的本质[数据库原理]
开发语言·数据库·职场和发展
_ku_ku_4 小时前
数据库系统原理 · SQL 数据定义、更新及数据库编程 · 自学总结
数据库·oracle
WL_Aurora4 小时前
MapReduce【Shuffle-Combiner】
大数据·mapreduce