搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家小花儿
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
华为OD机试C卷-- 亲子游戏(Java & JS & Python & C)
2
numpy astype_numpy库astype
3
kaggle:Digit Recognizer《手写数字识别》你的第一个图像识别竞赛项目_图像识别 竞赛
4
AI文案编辑,高效修订无疏漏
5
vue项目:集成富文本编辑器 - 百度ueditor(vue-ueditor-wrap)
6
苹果终于要认真发力智能家居了!挖来前微软副总裁掌舵其人工智能部门!_微软 heidi 智能家居
7
【hcie-cloud】【9】华为云Stack_Deploy部署工具介绍_hcs deploy
8
[机器学习]One-Hot编码总结(独热编码)_one-hot编码提出论文
9
【编程知识】怎么有效地查询MySQL表中的重复数据_数据库查询重复数据并显示重复次数
10
【CCAI大咖秀】微信陈波:人工智能技术实战的五大挑战
当前位置:
article
> 正文
Spark SQL利器:cacheTable/uncacheTable_uncache table
作者:我家小花儿 | 2024-06-19 01:21:29
赞
踩
uncache table
http://www.cnblogs.com/yurunmiao/p/4936583.html
Spark相对于Hadoop MapReduce有一个很显著的特性就是“迭代计算”(作为一个MapReduce的忠实粉丝,能这样说,大家都懂了吧),这在我们的业务场景里真的是非常有用。
假设我们有一个文本文件“datas”,每一行有三列数据,以“\t”分隔,模拟生成文件的代码如下:
执行该代码之后,文本文件会存储于本地路径:/tmp/datas,它包含1000行测试数据,将其上传至我们的测试Hadoop集群,路径:/user/yurun/datas,命令如下:
查询一下它的状态:
我们通过Spark SQL API将其注册为一张表,代码如下:
表的名称为source,它有三列,列名分别为:col1、col2、col3,类型都为字符串(str),测试打印其前10行数据:
假设我们的分析需求如下:
(1)过滤条件:col1 = ‘col1_50',以col2为分组,求col3的最大值;
(2)过滤条件:col1 = 'col1_50',以col3为分组,求col2的最小值;
注意:需求是不是很变态,再次注意我们只是模拟。
通过情况下我们可以这么做:
每一个collect()(Action)都会产生一个Spark Job,
因为这两个需求的处理逻辑是类似的,它们都有两个Stage:
可以看出这两个Job的数据输入量是一致的,根据输入量的具体数值,我们可以推断出这两个Job都是直接从原始数据(文本文件)计算的。
这种情况在Hive(MapReduce)的世界里是很难优化的,处理逻辑虽然简单,却无法使用一条SQL语句表述(有的是因为分析逻辑复杂,有的则因为各个处理逻辑的结果需要独立存储),只能一个需求对应一(多)条SQL语句(如上示例),带来的问题就是全量原始数据多次被分析,在海量数据的场景下必然带来集群资源的巨大浪费。
其实这两个需求有一个共同点:过滤条件相同(col1 = 'col1_50'),一个很自然的想法就是将满足过滤条件的数据缓存,然后在缓存数据之上执行计算,Spark为我们做到了这一点。
依然是两个Job,每个Job仍然是两个Stage,但这两个Stage的输入数据量(Input)已发生变化:
Job1的Input(数据输入量)仍然是63.5KB,是因为“cacheTable”仅仅在RDD(cacheRDD)第一次被触发计算并执行完成之后才会生效,因此Job1的Input是63.5KB;而Job2执行时“cacheTable”已生效,直接输入缓存中的数据即可,因此Job2的Input减少为3.4KB,而且因为所需缓存的数据量小,可以完全被缓存于内存中,因此效率极高。
我们也可以从Spark相关页面中确认“cache”确实生效:
我们也需要注意cacheTable与uncacheTable的使用时机,cacheTable主要用于缓存中间表结果,它的特点是少量数据且被后续计算(SQL)频繁使用;如果中间表结果使用完毕,我们应该立即使用uncacheTable释放缓存空间,用于缓存其它数据(示例中注释uncacheTable操作,是为了页面中可以清楚看到表被缓存的效果)。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家小花儿/article/detail/734902
推荐阅读
article
Apache
Spark
MLlib
详解...
Apache
Spark
MLlib
是
Spark
的一个核心组件,提供了大量的机器学习算法和工具,用于在大数据集上进...
赞
踩
article
vxe
-
table
循环
的
vxe
-
table
-
column
如何进行
edit
-
rules
校验_
vxe
-...
2.现在需要对hasDistribut这个字段进行校验,但是这个字段在经过
循环
后,已经衍生成hasDistribut_0...
赞
踩
article
Spark
在
Windows
下的
环境
搭建及py
spark
的使用_
windows
spark
hadoo...
1、将
Spark
目录下的py
spark
文件夹(D:\
Spark
\
spark
-2.2.0-bin-
hadoop
2.7\py...
赞
踩
article
详解
Flink
Table
API
和
Flink
SQL
之入门介绍...
Flink
提供了对于“表”处理的支持,这就是更高层级的应用
API
,在
Flink
中被称为
Table
API
和 ...
赞
踩
article
详解
Flink
Table
API
和
Flink
SQL
之表操作...
表的输出是通过将数据写入到
Table
Sink 来实现的。
Table
Sink 是
Table
API
中提供的一个向外部...
赞
踩
article
详解
Flink
Table
API
和
Flink
SQL
之函数...
UDF 显著地扩展了查询的表达能力,可以解决一些系统内置函数无法解决的需求。使用步骤为:自定义 UDF 函数类继承 Us...
赞
踩
article
详解
Flink
Table
API 和
Flink
SQL
之
窗口
操作...
时间语义,要配合
窗口
操作才能发挥作用。详解
Flink
Table
API 和
Flink
SQL
之
窗口
操作 ...
赞
踩
article
32、
Flink
table
api
和SQL 之用户
自定义
Sources
&
Sinks
实现及详细...
1、
Flink
部署、概念介绍、
source
、transformation、sink使用示例、四大基石介绍和示例等系列综...
赞
踩
article
Flink
Table
API
和
Flink
-SQL使用详解_
flink
table
api
&sq...
动态表( Dynamic
Table
s ) 是
Flink
的支持流数据的
Table
API
和 SQL 的核心...
赞
踩
article
详解
Flink
Table
API 和
Flink
SQL
之流
处理
中
的
表
...
动态
表
可以像静态
的
批
处理
表
一样进行查询操作。由于数据在不断变化,因此基于它定义
的
SQL
查询也不可能执行一次就得到最终...
赞
踩
article
HiveMetaException
: Failed
to
get
schema
version, C...
CDH6.1安装问题解决系统: Cen
to
s7.5, 数据库:mysql5.7.24, 虚拟机:VMware Works...
赞
踩
article
spark
sql
查询
hive
task
过多导致任务执行缓慢_
spark
sql
的
hive
table...
一、问题跑了一年多的
spark
sql
任务突然挂掉了,查看yarn的界面,任务并行度达到了恐怖的81835个,运行速度自...
赞
踩
article
spark
sql
hive
批量
导入
文本文件
_
spark
一级
hive
的
批量
模式...
在很多情况下,会需要将
批量
生成(如按天生成的记录)
导入
到HIVE中。针对这种应用场景,进行实验。首先需要进行文件目录的遍...
赞
踩
article
启动
hive
时报错:Required
table
miss
in
g
: “`
VERSION
`“
in
...
启动
hive
时报错:org.datanucleus.store.rdbms.exceptions.Miss
in
gTabl...
赞
踩
article
cdh安装
hive
出现Required
table
mi
s
s
in
g : “VERSION“
in
C...
CDH 安装
hive
报错_
required
table
mi
s
s
in
g : "ver
s
ion"
in
catalog
...
赞
踩
article
javax.jdo.JDODataStoreException:
Required
table
mi...
问题日志
Required
table
miss
in
g
: "`
VERSION
`"
in
Catalog
"" Schem...
赞
踩
article
Hive 启动Required
table
miss
in
g : “`VERSION`“
in
Cat...
Hive通过命令行启动出现如下报错:candidatesorg.
datanucleus
.store.rdbms.exce...
赞
踩
article
Caused by:
org
.
datanucleus
.
store
.
rdbms
.
exceptions
....
最近需要提取一些数据,故开始使用hive,本机搭建了一个hive客户端环境,但是始终有问题,在本机装好了mysql以后,...
赞
踩
article
Ubuntu
16.04 LTS上用
IDEA
编程操作
hive
报错:
Table
or
view
not...
Table
of Contents 系统: 环境: 问题: 原因: 解决方法: 参考连接: 这个问题(Exception...
赞
踩
article
Table
Hints
(
Transact
-SQL)_
table
hint
is
used
...
Table
Hints
(
Transact
-SQL)SQL Server 2012 Other Versions SQL...
赞
踩
相关标签
spark-ml
vue
vue.js
前端
spark
大数据
分布式
hadoop
jdk
flink
sql
数据库
java
flink 流批一体化
flink topn
flink 自定义源
flink sql