当前位置: 首页 > news >正文

Spark性能调优

Spark性能调优

  • executor内存不足
  • 用`UNION ALL`代替`UNION`
  • persist与耗时监控

executor内存不足

  1. 问题表现1:Container xx is running beyond physical memory limits. Current usage: xxx GB of x GB physical memory used; xx GB of x GB virtual memory used…
    原因:这个报错显而易见,数据使用的内存超过了这个executor分配的内存
  2. 问题表现2:长时间的 Fail to get RpcResponse: Timeout,最后会报heartbeat心跳检测失败而任务失败
    原因:实际上同样是因为内存不足,导致GC而超时,最终失败

解决:
1 首先可以尝试开大executor的内存分配
2 如果配置的内存无法满足数据内存,可以尝试:
2.1 增加大数据量位置的repartition数

   val allDf = sourceDf.repartition(5000).flatMap(row => { }).toDF()

2.2 增加spark session的超时时间

    val ss = SparkSession.builder().config("spark.sql.shuffle.partitions", 1000).config("spark.driver.maxResultSize", "20g").config("hive.exec.dynamic.partition", true).config("hive.exec.dynamic.partition.mode", "nonstrict").config("hive.exec.parallel", true).config("mapred.max.split.size", 64000000).config("mapred.min.split.size.per.node", 64000000).config("mapred.min.split.size.per.rack", 64000000).config("hive.exec.reducers.bytes.per.reducer", 256000000).config("hive.exec.reducers.max", 2000).config("hive.merge.mapredfiles", true).config("hive.merge.smallfiles.avgsize", 128000000).config("hive.merge.size.per.task", 128000000).config("spark.yarn.executor.memoryOverhead", "10g").config("spark.network.timeout", 10000000)	// 调大.enableHiveSupport().getOrCreate()

UNION ALL代替UNION

UNION会默认对两个表的结果进行去重,如果没有去重的需要,就使用UNION ALL,速度会更快

persist与耗时监控

在主流程的对运算结果调用处persist,并打点进行耗时监控。而不是在运算方法内部persist,便于看清每一步的运算时间。

相关文章:

  • 2024年航海制造工程与海洋工程国际会议(ICNMEME2024)
  • git仓库批量备份
  • LeetCode 54 螺旋矩阵
  • 扩展学习|商业智能和大数据分析的研究前景(比对分析)
  • 【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(持续更新)
  • 【Linux笔记】文件描述符与重定向
  • 《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树(代码python实践)
  • ingres nginx 反向代理常见配置(持续更新)
  • 盘点Python网页开发轻量级框架Flask知识
  • C++ 数论相关题目 博弈论 Nim游戏
  • 微信小程序(二十五)条件判断语句与结构隐藏
  • Django视图函数技巧,从入门到实战
  • 开源电商系统
  • LeetCode每日一题 | 2808. 使循环数组所有元素相等的最少秒数
  • 搭建幻兽帕鲁需要什么样的服务器
  • 分享一款快速APP功能测试工具
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Docker下部署自己的LNMP工作环境
  • isset在php5.6-和php7.0+的一些差异
  • php的插入排序,通过双层for循环
  • Vultr 教程目录
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 规范化安全开发 KOA 手脚架
  • 汉诺塔算法
  • 今年的LC3大会没了?
  • 经典排序算法及其 Java 实现
  • 目录与文件属性:编写ls
  • 判断客户端类型,Android,iOS,PC
  • 时间复杂度与空间复杂度分析
  • 我的面试准备过程--容器(更新中)
  • 协程
  • 学习HTTP相关知识笔记
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三)docker:Dockerfile构建容器运行jar包
  • (十六)串口UART
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (五)Python 垃圾回收机制
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)c++ std::pair 与 std::make
  • (转)Sublime Text3配置Lua运行环境
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core跨平台微服务学习资源
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net 提取注释生成API文档 帮助文档
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @RequestBody的使用
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • []C/C++读取串口接收到的数据程序