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

相关推荐
陌上丨1 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
uesowys1 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56781 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw2 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30732 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
CRzkHbaXTmHw2 小时前
探索Flyback反激式开关电源的Matlab Simulink仿真之旅
大数据
数据知道2 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
七夜zippoe2 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥2 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿2 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能