Spark SQL编程初级实践

news/2024/5/18 20:34:50

参考链接

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

RDD编程初级实践-CSDN博客

Spark和Hadoop的安装-CSDN博客

1. Spark SQL基本操作

{ "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  查询所有数据

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  查询所有数据,并去除重复的数据

df.distinct().show()

 distinct()去重。

 

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

df.drop(df("id")).show()

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

 

1.4  筛选出age>30的记录

df.filter(df("age")>30).show()

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

1.5  将数据按age分组

df.groupBy(df("age")).count.show()

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

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

1.6  将数据按name升序排列

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行数据

df.show(3)

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

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

df.select(df("name").as("username")).show()

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

 

1.9  查询年龄age的平均值

df.agg("age"->"avg").show()

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

avg平均。

1.10 查询年龄age的最小值

df.agg("age"->"min").show()

min最小。 

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

1,Ella,36
2,Bob,29
3,Jack,29

创建项目

sudo mkdir -p /example/sparkapp6/src/main/scala
cd /example/sparkapp6/src/main/scala

  创建employee.txt

sudo vim employee.txt 
cat employee.txt

创建Scala文件

sudo vim ./SimpleApp.scala

 

 创建.sbt文件

sudo vim build.sbt
name := "Simple Project"
version := "1.0"
scalaVersion := "2.13.13"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.5.1"

 打包执行

/usr/local/sbt/sbt package
spark-submit --class "SimpleApp" ./target/scala-2.13/simple-project_2.13-1.0.jar

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

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

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


http://www.mrgr.cn/p/86443558

相关文章

文件(夹)批量重命名数字、字母、日期、中文数字大写小写

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 目标是重命名下面5个文件(也可以是文件夹等,任意),从大写中文数字“贰”开始 打开工具,找到“文件批量复制”版块,快捷键Ctrl+5 找到右下角重命名按钮,点击打开 把那5个要重命名的文件拖入(也…

SpringCloud 学习笔记 —— 六、Ribbon:负载均衡(基于客户端)

SpringCloud 学习笔记 —— 一、背景-CSDN博客 SpringCloud 学习笔记 —— 二、微服务与微服务架构-CSDN博客 SpringCloud 学习笔记 —— 三、SpringCloud 入门概述-CSDN博客 SpringCloud 学习笔记 —— 四、SpringCloud Rest 学习环境搭建:服务提供者-CSDN博客 …

ULTIMATE VOCAL REMOVER V5 for Mac:专业人声消除软件

ULTIMATE VOCAL REMOVER V5 for Mac是一款专为Mac用户设计的人声消除软件,它凭借强大的功能和卓越的性能,在音乐制作和后期处理领域崭露头角。 ULTIMATE VOCAL REMOVER V5 for Mac v5.6激活版下载 这款软件基于深度神经网络,通过先进的训练模…

使用快捷键的方式把多个关键字文本快速替换(快速替换AE脚本代码)

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 这里做AE(Adobe After Effact)里的脚本规则,把英文替换成中文,如下 swap= thisComp.layer(“Segment settings”).effect("%")(“Checkbox”);if(swap==true){s=thisComp.layer(“Segment se…

PS通过AXI-LITE配置PL端输入

第一步:根据需要配置的参数数量配置一个AXI-LITE IP 包括:输出端口,内部控制信号等。 第二步:在配置过程中为IP设置存储的位置 第三步:在PS中约定把数据写入该地址的方法: 例如:https://www.cnblogs.com/VerweileDoch/p/18080046 第四步:输出参数并且使用

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库,全称为Data-Driven Documents,即数据驱动文档。它以数据为核心,通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具,使得开发者能够创建出各种交互式和动态的数据可…

快捷自由定时重启、注销、关机

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 1、打开工具,进入定时器编辑版块 2、左侧目录新建一个定时器 3、选择需要的周期,这里是每天0点,一次执行一条 4、添加具体事件 5、选 重启 6、也有关机、注销等等 7、添加完成,如果需要,可以继…

Facebook的语言学:社交媒体如何影响我们的沟通方式

1. 引言 社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为其中最具影响力的平台之一,不仅改变了人们之间的社交方式,也对我们的语言学产生了深远的影响。本文将深入探讨Facebook的语言学特点,以及它如何塑造和改变…

群晖的文件和目录挂载软链接问题,如何一个目录多头管理

注意:群晖不支持ln-s 软连接方式,ssh命令能成功,但是filestation不显示,群晖官方说不支持这种方式挂载。 解决:利用 mount 来将某个目录挂载到另外一个目录去,例如drive里面有一个web文件夹,你想要drive访问和网站管理兼顾,那么web文件夹本体放到drive里,用mount --bi…

242 基于matlab的3D路径规划

基于matlab的3D路径规划,蚁群算法(ACO)和天牛须(BAS)以及两种结合的三种优化方式,对3D路径规划的最短路径进行寻优。程序已调通,可直接运行。 242 3D路径规划 蚁群算法和天牛须 - 小红书 (xiaoh…

Rust 实战练习 - 12. Axum Web 简单demo

Rust Web 历程 Rust 的异步框架tokio非他莫属,而web框架一直是悬而未决,说到底还是因为没有官方成熟的方案指引,大家各玩各的,互不兼容,白白浪费精力。 这个事情一直等到半官方组织tokio推出axum有了改善。但是市场上…

1、Springboot的自动配置原理

Springboot的自动配置原理

博客园-修改好看的博客皮肤

今天在博客园申请了博客,为了使自己的博客更加美观,参照项目进行设置 项目地址 https://github.com/BNDong/Cnblogs-Theme-SimpleMemory 注意事项 1.应用插件需要 JS 权限,没有的需要先申请权限。 设置->基本设置->JS权限2.在侧边栏HTML代码中设置代码时需要将代码中的…

程序员兼职那些事儿

最近周边发生一起程序员兼职引起的纠纷事件,作为一名资深程序员的我也做过兼职,所以不禁思考作为程序员做兼职时的一些套路,以及应该遵循的原则。1、兼职引起的纠纷 最近笔者发现周边有些程序员常年利用上班时间做兼职工作,还拉拢一些在职同事一起参与,而且做兼职的过程中…

QBXT五一集训DAY3笔记

\(Day\) \(3\) 位运算 位运算包含了五个运算符,分别是:&与 只有两个对应位都为 \(1\) 时才为 \(1\)|或 只要两个对应位中有一个 \(1\) 时就为 \(1\)^异或 只有两个对应位不同时才为 \(1\)<<左移 如 \(n<<i\) 表示将 \(n\) 的二进制向左移动 \(i\) 位,等价于…

Teamcenter AWC 调用存储过程输出报表

1.前端: 1.1增加导出报表命令:{"commands": {...,"ExportBOMCommand": {"iconId": "cmdZoomToSelected","title": "{{i18n.ExportBOMCommandTitle}}","description": "{{i18n.ExportBOMCommandD…

uniapp乡村社区户籍问外来人员管理系统 微信小程序python+java+node.js+php

基于微信小程序的外来人员管理系统项目的概述设计分析&#xff0c;主要内容有的私教预约平台系统平台的具体分析&#xff0c;进行数据库的是设计&#xff0c;数据采用MySQL数据库&#xff0c;并且对于系统的设计采用比较人性化的操作设计&#xff0c;对于系统出现的错误信息可以…

R语言的基本图形

一&#xff0c;条形图 安装包 install.packages("vcd") 绘制简单的条形图 barplot(c(1,2,4,5,6,3)) 水平条形图 barplot(c(1,2,4,5,6,3),horiz TRUE) 堆砌条形图 > d1<-c("Placebo","Treated") > d2<-c("None",&qu…

Stable Diffusion 模型分享:Counterfeit-V3.0(动漫)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 高质量动漫风格模型。 条目内容类型大模型基础模…

VS Code 保存+格式化代码

在 VSCode 中&#xff0c;使用 Ctrl S 快捷键直接保存并格式化代码&#xff1a; 打开 VSCode 的设置界面&#xff1a;File -> Preferences -> Settings在设置界面搜索框中输入“format on save”&#xff0c;勾选“Editor: Format On Save”选项&#xff0c;表示在保存…