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

相关推荐
迎仔4 分钟前
13-云原生大数据架构介绍:大数据世界的“弹性城市”
大数据·云原生·架构
产品人卫朋5 分钟前
卫朋:IPD流程落地 - 市场地图拆解篇
大数据·人工智能·物联网
2301_818732067 分钟前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
Austindatabases10 分钟前
<span class=“js_title_inner“>DBA 未来的是末日还是希望 -- 国外专家博主分析谈发展趋势 (翻译 分析)</span>
数据库·dba
难得的我们20 分钟前
超越Python:下一步该学什么编程语言?
jvm·数据库·python
青衫码上行23 分钟前
NoSql数据库简介 + Redis概述
数据库·redis·nosql
码农阿豪26 分钟前
Oracle 到金仓数据库迁移实战:一次真正“落地”的国产替代之旅
java·数据库·oracle
TDengine (老段)44 分钟前
通过云服务 快速体验 TDengine
大数据·数据库·物联网·时序数据库·tdengine·涛思数据·iotdb
惊讶的猫1 小时前
mysql多表查询
数据库·mysql
硅基流动1 小时前
从云原生到 AI 的跃迁探索之路|开发者说
大数据·人工智能·云原生