当前位置: 首页 > 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. 使循环数组所有元素相等的最少秒数
  • 搭建幻兽帕鲁需要什么样的服务器
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • AngularJS指令开发(1)——参数详解
  • C语言笔记(第一章:C语言编程)
  • Docker入门(二) - Dockerfile
  • Docker下部署自己的LNMP工作环境
  • es6
  • HashMap ConcurrentHashMap
  • Java 网络编程(2):UDP 的使用
  • JavaScript设计模式之工厂模式
  • js中forEach回调同异步问题
  • Linux链接文件
  • PHP 7 修改了什么呢 -- 2
  • QQ浏览器x5内核的兼容性问题
  • React+TypeScript入门
  • TCP拥塞控制
  • ubuntu 下nginx安装 并支持https协议
  • 关于extract.autodesk.io的一些说明
  • 开发基于以太坊智能合约的DApp
  • 力扣(LeetCode)21
  • 前端面试之闭包
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 小程序开发之路(一)
  • 学习HTTP相关知识笔记
  • puppet连载22:define用法
  • 阿里云服务器购买完整流程
  • #100天计划# 2013年9月29日
  • (1)bark-ml
  • (20050108)又读《平凡的世界》
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (二十四)Flask之flask-session组件
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (力扣)循环队列的实现与详解(C语言)
  • (篇九)MySQL常用内置函数
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)h264中avc和flv数据的解析
  • (转)创业的注意事项
  • ***通过什么方式***网吧
  • .Net Redis的秒杀Dome和异步执行
  • .net 反编译_.net反编译的相关问题