搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
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
Unity3D 游戏数据本地化存储与管理详解
2
生成对抗网络(GAN)_对抗网络 共享特征
3
python+jieba+wordcloud实现超酷的词云_jieba分词后如何使用jupyter输出
4
go + uniapp 通过 微信 code 获取 appid 等信息 无废话_uniapp获取微信code
5
go语言有没有简单的流程引擎_go 流程引擎
6
Mysql---C#在cmd中使用mysqldump导出sql文件
7
论文阅读【时间序列分析1】Reconstructing Nonlinear Dynamical Systems from Multi-Modal Time Series_多模态时间序列
8
yolov5调试common.py出现importerror: cannot import name ‘tryexcept‘ from ‘utils‘_cannot import name 'tryexcept' from 'utils
9
Android:漫画APP开发笔记之ListView中图片按屏幕宽度缩放_android listview可缩放
10
基于 Nginx Ingress + 云效 AppStack 实现灰度发布
当前位置:
article
> 正文
sparksql-cache小表实现mapjoin优化性能
作者:笔触狂放9 | 2024-06-16 03:58:04
赞
踩
cache table xx as
对于复杂sql且关联表较多的情况,数据倾斜是很常见的问题,几乎可以说不倾斜才是少见情况,而在不能改变原始数据(不能采用多阶段分段聚合),不能改变spark源码的情况下,除了调整各种参数,可操作的空间并不多。
对于表之间的join操作,一般来说我们都知道有map join和reduce join两种情况。因为reduce端会按map输出的key的分布处理相应的数据,在数据倾斜的情况下就会造成单个task压力过大,拖累整个job时间,甚至OOM等诸多问题。而如果能在map端完成join,就会极大的减小reduce端的压力,提升并行度。
map端的join适用于在join的表比较小的情况,另外如字典表这种的与其他表join时,因为本身数据就很少,势必会造成数据严重的倾斜,因而这种情况下使用map端的join就再适合不过。在sparksql中,并没有直接提供如map join之类的关键字,但是也不是没有办法,spark提供了broadhashjoin。要注意的是单纯设置broadcastjoin的大小并没有效果,看下面这个例子,这是一张大表和一个字典表的join,可以看到,两张表的处理是一样的,join在reduce端,从实际的运行情况看,也如预料的一样,倾斜严重。
我的项目里使用的是hivecontext,就是spark on hive,因而实现map join的方式就是讲小表进行cache,然后再做查询,看下优化后的执行计划,变成一个stage了,实际的运行时间也提升明显。原来的sql不需要修改,只需要对小表执行
CACHE TABLE xx as select * from xx
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/725051
推荐阅读
article
deepspeed
训练模型报错:
磁盘空间
不够
_
deepspeed
cache
...
修改huggingface缓存路径,让数据存到其它分区上,不和目录“~/.
cache
”在同一分区即可。“df -Th”命...
赞
踩
article
flutter
flutter
pub
cache
clean
和
flutter
clean
区别...
这个命令用于清理 Flutter 项目的构建文件。当你在 Flutter 项目中进行构建时,会生成一些构建文件和输出目录...
赞
踩
article
SparkSQL
—
RDD
、
DataFrame
、
DataSet
关系与转换_1. 自
定义数据
创建
data...
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之p...
赞
踩
article
【
ARM
Cache
与
MMU
/MPU 系列文章 1.1 -- 如何
获取
Cache
size
的
大小
...
所以通过读取 CCSIDR_EL1, Current
Cache
Size ID 寄存器,就可以
获取
Cache
Siz...
赞
踩
article
SpringBoot
中集成
Redis
实现对
redis
中数据的解析和存储_springboot cac...
上面讲的操作
redis
的工具类,但是对于
redis
的集成并没做细讲。下面参考若依框架的实现,从中抽离出集成
redis
的部...
赞
踩
article
数据
缓存
(
Redis
,
Spring
Cache
)——后端_后端
数据
怎么
缓存
...
(
ps:
Redis
中的
数据
类型和Java中的
数据
类型并不是完全对应的,Java中的任何一个对象都可以转成
Redis
中的s...
赞
踩
article
hive
d
at
anucleus
cache
不一致问题_
at
least one column m...
现象:最近有用户反应
hive
里面对某张表修改了几个字段名后,在另外的窗口中还是看到原字段名,比较奇怪。我一开始想到可能是...
赞
踩
article
android新建项目报错:Error Could not
open
proj
remapped
c...
报错提示:不能为(路径下的文件)打开项目重映射缓存类,试着删除该路径下的文件,rebuild还是不行。解决办法:打开工程...
赞
踩
article
ARP
cache
更新
的
几种情况...
ARP
更新
cache
的
条件1,主机收到这个
ARP
请求后,会检查数据包中
的
目
的
IP是否和自己
的
IP地址一致。如果不相同就...
赞
踩
article
ARP
cache
更新
的几种情况_
arp
缓存
更新
机制...
ARP
更新
cache
的条件1、主机收到这个
ARP
请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就...
赞
踩
article
ARP
Cache
更新
过程_
一个
刚进入网络
的
主机arp
缓存
表是如何
更新
的
...
给每一台PC添加IP地址用PC0给PC1发送简单报文单击capture/forward收到
ARP
请求后,
更新
ARP
缓存
表...
赞
踩
article
sparkSql
jion
优化...
2019独角兽企业重金招聘Python工程师标准>>> ..._sparksql两张大表优化sp...
赞
踩
article
SparkSQL
–
Jo
in
的三种方式_下列哪种方式不是
spark
中
jo
in
的分类...
转载自:http://hbasefly.com/2017/03/19/
spark
sql-basic-
jo
in
/
Jo
in
常...
赞
踩
article
Spark
-
sql
Join优化=>(
cache
+BroadCast)_
spark
cache
jo...
Spark
-
sql
Join优化背景
spark
-
sql
或者hive-
sql
很多业务场景都会有表关联的的操作,在h...
赞
踩
article
Spark
:SQL操作 cache、
filter
、
selectExpr
、agg、join、udf_s...
统计订单中商品的数量、统计商品被再次购买(reordered)的数量、统计被重复购买的比率。_
spark
sql
的fil...
赞
踩
article
Spark
原理之
Cache
Table
的工作原理及实现自动缓存重复
Table
Scan的思考_spa...
CACHE TABLE,可以让用户自定义要缓存的结果集,实际上就是一个临时表,不过数据存储在
Spark
集群内部,由App...
赞
踩
article
broadCast
、
cache
、
checkpoint
、累加器_
cache
broadcast
...
boradCast、
cache
、
checkpoint
简单使用_
cache
broadcast
cache
broadcas...
赞
踩
相关标签
linux
flutter
大数据
scala
sql
arm开发
cache size
redis
spring boot
缓存
spring
Hive
java
移动开发
开发工具
cache
存储
网络
python
runtime
spark
join
broadcast
优化