Scala-Spark 生成jar之后再命令行执行 出现GC overhead Limit怎么办

之前一直在intellJ里面执行代码,所有的输入命令都是用内置的Edit Configuration写好的,原本以为会没有问题,但是一旦生成jar之后再命令行里面修改就会一直在最后出现GC overhead Limit,如图


然后在网上多方搜寻,终于找到了解决方法,首先执行spark-submit的时候去http://localhost:4040/jobs/

检查自己的内存用的是多大,这里有一个Storage Memory 可以看到自己的memory是多大,一般在IntellJ里面系统会自己设置成大概在900MB左右,但是进入系统本身的命令行就只有大概300MB,所以会一直显示GC overhead Limit. 修改过之后就可以把这个问题解决了。


下面主要是一些如何修改的干货!

1. 首先进入自己的spark的包的位置


2.进入conf 文件夹


3.复制spark-env.sh.template文件,并且修改名称叫做spark-env.sh

3.1 cp spark-env.sh.template spark-env.sh

3.2 vim spark-env.sh

加入下面两个命令

export SPARK_DRIVER_MEMORY=4g

export SPARK_EXECUTOR_MEMORY=4g

4. 之后保存之后再去命令行里面执行scala代码,再去http://localhost:4040/jobs/,检查自己的内存使用情况,如果出现我图一所给出的900MB,就是基本上解决了GC overhead Limit这个问题,但是如果设置完了之后还是不能执行,或者还是报相同的错误,首先不妨可以试试再把内存提高,再不然可以修改一下代码里面有关于shuffle的地方,或者将aggregateByKey, GroupByKey这些需要大量时间和内存的地方优化一下,就可以啦,希望大家都能debug成功!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容