spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常

代码:

import com.mongodb.spark.config.ReadConfig
import com.mongodb.spark.sql._
val config = sqlContext.sparkContext.getConf
.set("spark.mongodb.keep_alive_ms", "15000")
.set("spark.mongodb.input.uri", "mongodb://10.100.12.14:27017")
.set("spark.mongodb.input.database", "bi")
.set("spark.mongodb.input.collection", "userGroupMapping")
val readConfig = ReadConfig(config)
val objUserGroupMapping = sqlContext.read
.format("com.mongodb.spark.sql")
.mongo(readConfig)
objUserGroupMapping.printSchema()
val tbUserGroupMapping=objUserGroupMapping.toDF()
tbUserGroupMapping.registerTempTable("userGroupMapping")

select _id,c,g,n,rn,t,ut from userGroupMapping where ut>‘2018-05-02‘ limit 100

使用上述的代码取userGroupMapping 集合过后的100条记录,出现了executor time out 和GC overhead limit exceeded 异常。一开始以为推测是task 从mongodb取的数据太大,导致spark executor内存不够,后来调研了一下spark mongodb connector 在取数据的时候是条件下发的,也就是先从mongodb过滤再取回spark 内存,这样的话就不会出现内存不够的情况。后来在网上调研后,有一种说法是说task 太多,导致task gc的时候争夺gc时间和内存资源(这个不是很清楚),根据这种说法,我把本来task core 从16个调成6个后再跑程序,居然不会报错了。至于 具体原因还不是很清楚,先在这里记录一下。

原文地址:https://www.cnblogs.com/chengjunhao/p/8984466.html

时间: 2024-11-08 19:17:15

spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常的相关文章

Android Studio编译报错“java.lang.OutOfMemoryError: GC overhead limit exceeded

1.在build.gradle添加脚本指定编译堆内存 如果在整个工程中生效,则在build.gradle中增加如下配置: android { .............. dexOptions { incremental true javaMaxHeapSize "4g" } ............... } 如果只在单元测试的时候生效,则在build.gradle中增加如下配置: android { ..............     testOptions {         

Spark 1.4.1中Beeline使用的gc overhead limit exceeded

最近使用SparkSQL做数据的打平操作,就是把多个表的数据经过关联操作导入到一个表中,这样数据查询的过程中就不需要在多个表中查询了,在数据量大的情况下,这样大大提高了查询效率. 我启动了thriftserver,然后通过beeline去连接thriftserver, 打平操作进行的很顺利,但是在执行groupby操作的时候beeline报了一个错误:gc overhead limit exceeded 我分析可能是thriftserver报的错误.但是查看了thriftserver的日志没有任

spark出现GC overhead limit exceeded和java heap space

spark执行任务时出现java.lang.OutOfMemoryError: GC overhead limit exceeded和java.lang.OutOfMemoryError: java heap space 最直接的解决方式就是在spark-env.sh中将下面两个参数调节的尽量大 export SPARK_EXECUTOR_MEMORY=6000M    export SPARK_DRIVER_MEMORY=7000M 注意,此两个参数设置需要注意大小顺序: SPARK_EXEC

Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法

问题描述: 在使用spark过程中,有时会因为数据增大,而出现下面两种错误: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError:GC overhead limit exceeded 这两种错误之前我一直认为是executor的内存给的不够,但是仔细分析发现其实并不是executor内存给的不足,而是driver的内存给的不足.在standalone client模式下用spark-submit提交任务时(

IDEA报错:GC overhead limit exceeded?

1. 问题描述 在运行代码之后,出现以下错误: Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 107.0 failed 1 times, most recent failure: Lost task 0.0 in stage 107.0 (TID 208, localhost, executor driver):

JVM运行报错:GC overhead limit exceeded

今天在折腾OOM和java的4种引用类型的时候,在运行过程中JVM报了一个错误: java.lang.OutOfMemoryError: GC overhead limit exceeded 这个错误平时遇到的概率很少很少,今天无意中遇到了,这里做个记录.oracle/sun官网的解释是: The concurrent collector will throw an OutOfMemoryError if too much time is being spent in garbage colle

eclipse一直报An internal error occurred during: "Building workspace". GC overhead limit exceeded

最近导入到eclipse里的工程挺大的,每次eclipse启动之后都回update workspace,然后就一直报: An internal error occurred during: "Building workspace". GC overhead limit exceeded 这个错误. 解决方法: 原因是Eclipse默认配置内存太小需要更改Eclipse安装文件夹下的eclipse.ini文件. Eclipse.ini默认文件如下: 修改如下: -Xms512m -Xmx

Eclipse报错:gc overhead limit exceeded eclipse

原因是Eclipse默认配置内存太小需要更改Eclipse安装文件夹下的eclipse.ini文件. 1.打开eclipse配置文件  找到eclipse 执行文件上右键-显示包内容-Contents-MacOS-eclipse.ini 修改如下: -Xms512m -Xmx1024m 第一个是最小的初始化内存,第二个是最大的占有内存 还可以加上 -XX:MaxPermSize=1024m这个意思是在编译文件时一直占有最大内存,重启Eclipse

Eclipse启动报错:An internal error occurred during: "Building workspace". GC overhead limit exceeded

今天启动Eclipse时发现右下角的building workspce走到2%时,不动了,Eclipse好长时间没反应,然后弹出错误信息:An internal error occurred during: "Building workspace". GC overhead limit exceeded. 如下图: 上网搜了一下,说是要修改一下Eclipse安装下的eclipse.ini文件,增加Eclipse实例的内存分配,.打开eclipse.ini文件,内容如下: [html]