一、问题现象:使用spark sql调用get_json_object函数后,报如下错误:yarn 容器被kill,导致任务失败,查看日志:Container killed by YARN for exceeding memory limits

使用spark命令:

二、问题分析过程:

2.1 既然executor内存不够,那么最先想到的就是增大executor-memory内存大小,从6G增大到12G =》通过多次测试发现,有时任务能成功,有时还是报相同的错误,并且内存还越用越多,诡异

2.2 分析数据量发现其实并不大,也就几十万。以前上千万的数据量都不需要这么多内存。因此怀疑是get_json_object函数引起的问题。

2.3 去掉get_json_object函数,果然任务非常流畅,而且内存调回6G依然是成功的。

2.4 突然灵光一闪,依稀记得线下班讲过这块code,spark.yarn.executor.memoryOverhead这个参数是spark excutor的堆外内存,用于 VM overheads, interned strings, other native overheads, etc。猜想get_json_object应该主要是用的堆外内存。

2.5 spark.yarn.executor.memoryOverhead默认等于max(executorMemory * 0.10,384M),那么增大executorMemory再多,堆外内存实际增加的也比较少,因此考虑直接增大spark.yarn.executor.memoryOverhead值。

2.6 设置spark.yarn.executor.memoryOverhead等于6G,executor-memory减少到4G,经过测试,任务非常稳定的成功。

三、问题结论及终极解决方案:

3.1 原因分析:

该问题是由于get_json_object使用的是堆外内存,默认堆外内存只有max( executorMemory * 0.10,384M),可根据Container killed by YARN for exceeding memory limits. 19.9 GB of 14 GB physical memory used,这里的19.9G估算出堆外内存实际需要19.9G*0.1约等于1.99G,因此最少应该设置spark.yarn.executor.memoryOverhead为2G,为保险起见,我最后设置成了4G,脚本如下:

3.2 本案例的Container killed by YARN for exceeding memory limits的解决方案:

3.2.1 增大executor-memory内存大小

3.2.2 增大spark.yarn.executor.memoryOverhead内存大小

具体选用那一种,效果更好,需要结合具体场景,所以千万不要忽略堆外内存哟。

get请求中传json参数报400的错误_诡异 | Spark使用get_json_object函数相关推荐

  1. 解决Ajax异步请求中传数组参数,后台无法接收问题

    解决Ajax异步请求中传数组参数,后台无法接收问题 参考文章: (1)解决Ajax异步请求中传数组参数,后台无法接收问题 (2)https://www.cnblogs.com/wangshuaiand ...

  2. https返回400_HTTP请求中带有特殊字符|,返回400错误

    Java平台,服务器是Tomcat8,前端ajax访问服务器时,F12返回400错误,经分析,URL地址中get传参值里面含有"|", Invalid character foun ...

  3. 13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition

    13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition 问题描述: [ERROR] /Users/ ...

  4. mybatis中传集合时 报异常 invalid comparison: java.util.Arrays$ArrayList and java.lang.String

    mybatis中传集合时 报异常 invalid comparison: java.util.Arrays$ArrayList and java.lang.String 参考文章: (1)mybati ...

  5. php中jquery ajax请求参数,浅谈Jquery中Ajax异步请求中的async参数的作用

    之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html asy.js function testAsync{ var temp; $.ajax( ...

  6. python 字典字符串转字典——urllib.request.Request发送get,post请求,发送json参数

    1.eval方法即可[字典字符串转字典] file_content = eval(file_content) 2.urllib.request.Request发送post请求,发送json参数 fro ...

  7. Tornado的同步API写法举例实现GET/POST/DELETE请求+Tornado获取post请求中的json数据(转载)

    下面的实验主要来自[1][2],但是对实验2的代码进行了修改,修改过程参考了[3] #---------------------------------------------------实验1--- ...

  8. HTTP 请求中的Header 参数

    HTTP 请求中的Header 参数 1.Requests Header | Http Header Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/p ...

  9. 在controller中调用指定参数给指定表单_第005课:Spring Boot 中MVC支持

    Spring Boot 的 MVC 支持主要介绍实际项目中最常用的几个注解,包括 @RestController. @RequestMapping.@PathVariable.@RequestPara ...

最新文章

  1. 第二章 序列比对——Blast局部比对
  2. SQL之 Stuff和For xml path
  3. MyBatis-Plus 高级功能 —— 自动填充功能
  4. 大公司里怎样开发和部署前端代码
  5. Java华丽转身 —— GUI编程宝典
  6. android usb存储固定,如何在Android 10中设置默认USB行为
  7. php 发帖代码,我的论坛源代码(四)_php
  8. JQuery --- 第三期 (jQuery事件相关)
  9. shell 截取某个字符串之后的内容
  10. 【收藏】NLP技术学习路线图,值得收藏,附下载
  11. 计算机考试操作步骤,计算机考试操作步骤(精).doc
  12. 全球十大机器人运动控制品牌
  13. 面试时如何做自我介绍?聪明的应聘者只聚焦1点
  14. JavaWeb——动态 web 资源开发
  15. [内附完整源码和文档] 基于VS2013实现的弹弹堂小游戏
  16. [导入]陈冠希蛰伏35天后闪电复出 将与舒淇演爱情片
  17. [Vulfocus解题系列] 所复现漏洞总结
  18. 睡眠质量不好怎么改善,这些助眠好物让你失眠快速入睡
  19. java实现读取excel用例,testNg自动化,读取excel的数据
  20. Portapack应用开发教程(十二) SSTV接收机 A

热门文章

  1. hibernate学习——Set集合配置
  2. 【原创,提供下载】winfrom 打印表格,字符串的封装
  3. WPF中显示任意目录的图片或其他资源文件
  4. 局域网内数据采集总结(四)
  5. 学成在线案例——黑马程序员pink老师\思路讲解\完整源代码
  6. OpenCV3学习(11.3)关键点的描述符KeyPoint对象与匹配类DMatch
  7. mysql的ps.setmaxrows_mysql自定义函数实现表的指定列进行数据脱敏(PS:来自mysql小白的提问)...
  8. github上传的项目代码语言类型修改
  9. Shell命令-磁盘与文件系统之e2fsck、mkswap
  10. 哇!Flash影片剪辑导出静止的问题被解决了!