当前位置:网站首页>spark调优(三):持久化减少二次查询
spark调优(三):持久化减少二次查询
2022-07-07 14:13:00 【InfoQ】
1. 起因
2. 优化开始
df = sc.sql(sql)
df1 = df.persist()
df1.createOrReplaceTempView(temp_table_name)
subdf = sc.sql(select * from temp_table_name)
- 默认情况下,性能最高的当然是MEMORY_ONLY,但前提是你的内存必须足够足够大,可以绰绰有余地存放下整个RDD的所有数据。因为不进行序列化与反序列化操作,就避免了这部分的性能开销;对这个RDD的后续算子操作,都是基于纯内存中的数据的操作,不需要从磁盘文件中读取数据,性能也很高;而且不需要复制一份数据副本,并远程传送到其他节点上。但是这里必须要注意的是,在实际的生产环境中,恐怕能够直接用这种策略的场景还是有限的,如果RDD中数据比较多时(比如几十亿),直接用这种持久化级别,会导致JVM的OOM内存溢出异常。
- 如果使用MEMORY_ONLY级别时发生了内存溢出,那么建议尝试使用MEMORY_ONLY_SER级别。该级别会将RDD数据序列化后再保存在内存中,此时每个partition仅仅是一个字节数组而已,大大减少了对象数量,并降低了内存占用。这种级别比MEMORY_ONLY多出来的性能开销,主要就是序列化与反序列化的开销。但是后续算子可以基于纯内存进行操作,因此性能总体还是比较高的。此外,可能发生的问题同上,如果RDD中的数据量过多的话,还是可能会导致OOM内存溢出的异常。
- 如果纯内存的级别都无法使用,那么建议使用MEMORY_AND_DISK_SER策略,而不是MEMORY_AND_DISK策略。因为既然到了这一步,就说明RDD的数据量很大,内存无法完全放下。序列化后的数据比较少,可以节省内存和磁盘的空间开销。同时该策略会优先尽量尝试将数据缓存在内存中,内存缓存不下才会写入磁盘。
- 通常不建议使用DISK_ONLY和后缀为_2的级别:因为完全基于磁盘文件进行数据的读写,会导致性能急剧降低,有时还不如重新计算一次所有RDD。后缀为_2的级别,必须将所有数据都复制一份副本,并发送到其他节点上,数据复制以及网络传输会导致较大的性能开销,除非是要求作业的高可用性,否则不建议使用。
结束语
边栏推荐
- 分步式监控平台zabbix
- Introduction to pyGame games
- Excessive dependence on subsidies, difficult collection of key customers, and how strong is the potential to reach the dream of "the first share of domestic databases"?
- laravel怎么获取到public路径
- 山东老博会,2022中国智慧养老展会,智能化养老、适老科技展
- A link opens the applet code. After compilation, it is easy to understand
- 修改配置文件后tidb无法启动
- [hcsd celebrity live broadcast] teach the interview tips of big companies in person - brief notes
- SPI master rx time out中断
- 121. The best time to buy and sell stocks
猜你喜欢
C4D learning notes 2- animation - timeline and time function
Balanced binary tree (AVL)
山东老博会,2022中国智慧养老展会,智能化养老、适老科技展
喜讯!科蓝SUNDB数据库与鸿数科技隐私数据保护管理软件完成兼容性适配
Eye of depth (VII) -- Elementary Transformation of matrix (attachment: explanation of some mathematical models)
Unity3D_ Class fishing project, control the distance between collision walls to adapt to different models
MySQL数据库基本操作-DQL-基本查询
神经网络c语言中的指针是怎么回事
Odoo integrated plausible embedded code monitoring platform
Unity3d click events added to 3D objects in the scene
随机推荐
Numpy -- epidemic data analysis case
Unity3D_ Class fishing project, control the distance between collision walls to adapt to different models
SPI master rx time out中断
Enterprise log analysis system elk
hellogolang
PHP中exit,exit(0),exit(1),exit(‘0’),exit(‘1’),die,return的区别
Description of vs common shortcut keys
2022山东智慧养老展,适老穿戴设备展,养老展,山东老博会
Shader basic UV operations, translation, rotation, scaling
95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
The unity vector rotates at a point
喜讯!科蓝SUNDB数据库与鸿数科技隐私数据保护管理软件完成兼容性适配
Asyncio concept and usage
Unity3d click events added to 3D objects in the scene
[hcsd celebrity live broadcast] teach the interview tips of big companies in person - brief notes
How to query the data of a certain day, a certain month, and a certain year in MySQL
laravel post提交数据时显示异常
招标公告:2022年云南联通gbase数据库维保公开比选项目(第二次)比选公告
Migration and reprint
融云斩获 2022 中国信创数字化办公门户卓越产品奖!