从mongodb加载大表到Spark时出现堆栈溢出错误

总而言之,我在mongodb中有一张大约1TB的表。我尝试使用mongo连接器将其加载到spark中,但是执行18分钟后,我不断出现堆栈溢出。

java.lang.StackOverflowError:
at scala.collection.TraversableLike$$anonfun$filter$1.apply(TraversableLike.scala:264)
at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
....
at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
16/06/29 08:42:22 INFO YarnAllocator: Driver requested a total number of 54692 executor(s).
16/06/29 08:42:22 INFO YarnAllocator: Will request 46501 executor containers, each with 4 cores and 5068 MB memory including 460 MB overhead

是因为我没有提供足够的内存吗?还是应该提供更多存储空间?我试图添加检查点,但这无济于事。我更改了代码中的某些值,因为它们与我的公司数据库有关,但是对于此问题,整个代码仍然可以。

val sqlContext = new SQLContext(sc)

val builder = MongodbConfigBuilder(Map(Host -> List("mymongodurl:mymongoport"), Database -> "mymongoddb", Collection ->"mymongocollection", SamplingRatio -> 0.01, WriteConcern -> "normal"))
val readConfig = builder.build()

val mongoRDD = sqlContext.fromMongoDB(readConfig)
mongoRDD.registerTempTable("mytable")

val dataFrame = sqlContext.sql("SELECT u_at, c_at FROM mytable")
val deltaCollect = dataFrame.filter("u_at is not null and c_at is not null and u_at != c_at").rdd
val mapDelta = deltaCollect.map {
  case Row(u_at: Date, c_at: Date) =>{
    if(u_at.getTime == c_at.getTime){
      (0.toString, 0l)
    }
    else{
      val delta = ( u_at.getTime - c_at.getTime ) / 1000/60/60/24
      (delta.toString, 1l)
    }
  }
}
val reduceRet = mapDelta.reduceByKey(_+_)

val OUTPUT_PATH = s"./dump"
reduceRet.saveAsTextFile(OUTPUT_PATH)

我在火花驱动程序中添加了另一个Java选项“ -Xss32m”,以提高每个线程的堆栈内存,并且此异常不再抛出。我多么愚蠢,我应该早点尝试一下。但是显示了另一个问题,我将不得不检查更多问题。仍然非常感谢您的帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

循环时出现堆栈溢出错误

来自分类Dev

尝试创建数组时出现堆栈溢出错误

来自分类Dev

遍历链表时出现堆栈溢出错误

来自分类Dev

在Oracle中截断表时出现数字溢出错误

来自分类Dev

从Spring属性解析器加载Web应用程序时出现堆栈溢出错误

来自分类Dev

尝试在C#中读取共享内存时出现堆栈溢出错误

来自分类Dev

当我尝试向结构分配新指针时出现堆栈溢出错误

来自分类Dev

在二分搜索树中执行搜索时出现堆栈溢出错误

来自分类Dev

在 GSON 中序列化泛型类时出现堆栈溢出错误

来自分类Dev

为什么此Scala代码出现堆栈溢出错误?

来自分类Dev

Sudoko Backtracker中出现奇怪的堆栈溢出错误

来自分类Dev

为什么会出现堆栈溢出错误?

来自分类Dev

Sparklyr 堆栈溢出错误联合多个表

来自分类Dev

递归的堆栈溢出错误

来自分类Dev

实现递归函数时的堆栈溢出错误(阶乘)

来自分类Dev

实现递归函数时的堆栈溢出错误(阶乘)

来自分类Dev

使用常量进行算术运算时出现溢出错误

来自分类Dev

使用常量进行算术运算时出现溢出错误

来自分类Dev

在 Python 中潜水大数时出现溢出错误

来自分类Dev

delphi中的堆栈溢出错误

来自分类Dev

程序抛出堆栈溢出错误

来自分类Dev

toStrings()的堆栈溢出错误(java)

来自分类Dev

堆栈溢出错误与无限循环

来自分类Dev

递归java上的堆栈溢出错误

来自分类Dev

Java的FloodFill问题堆栈溢出错误

来自分类Dev

递归方法中的堆栈溢出错误

来自分类Dev

堆栈溢出错误-C#

来自分类Dev

Java堆栈溢出错误递归

来自分类Dev

合并排序堆栈溢出错误