当前位置: 首页 > 知识库问答 >
问题:

为什么Spark会在java.lang.OutofMemoryError:超过GC开销限制时失败?

臧威
2023-03-14
val data = spark.textFile(file, 2).cache()
val result = data
  .map(//some pre-processing)
  .map(docWeightPar => (docWeightPar(0),docWeightPar(1))))
  .flatMap(line => MyFunctions.combine(line))
  .reduceByKey( _ + _)
def combine(tuples: Array[(String, String)]): IndexedSeq[(String,Double)] =
  for (i <- 0 to tuples.length - 2;
       j <- 1 to tuples.length - 1
  ) yield (toKey(tuples(i)._1,tuples(j)._1),tuples(i)._2.toDouble * tuples(j)._2.toDouble)

我可能做了一些非常基本的错误,但我找不到任何关于如何从这一点上站出来的指针,我想知道我如何才能避免这一点。由于我是Scala和Spark的新手,我不确定问题是来自其中一个还是另一个,或者两者都有。我目前正在我自己的笔记本电脑上运行这个程序,它适用于tuples数组长度不是很长的输入。提前谢了。

共有1个答案

骆昊阳
2023-03-14

在启动spark-shellspark-submit时添加以下JVM arg:

-Dspark.executor.memory=6g

您还可以考虑在创建SparkContext实例时显式设置worker的数量:

conf/slaves中设置从属名称:

val sc = new SparkContext("master", "MyApp")
 类似资料:
  • 但这并不能解决我的问题。我在我的分级中启用了multidex,因为没有它我会得到错误: com.android.dex.DexIndexOverflowException:方法ID不在[0,0xFFFF]:65536 所以这是一个解决方案,它在以前的Android Studio版本(也适用于公司的其他人,他们正在使用Android Studio1.4-2.0),但在我升级了我的Android St

  • 问题内容: 我在一个程序中创建了这个错误,该程序创建了几个(数十万)HashMap对象,每个对象都有几个(15-20)文本条目。这些字符串必须全部收集(不分解成较小的数量),然后再提交给数据库。 根据Sun的说法,该错误发生“如果在垃圾回收上花费了太多时间:如果在垃圾回收上花费了总时间的98%以上,而回收不到2%的堆,则将引发OutOfMemoryError。 ”。 显然,可以使用命令行将参数传递

  • 我们不确定从这里到哪里去,完全被困住了。有人能帮忙吗?我们到处找了一些例子来帮忙。

  • 我有一个Spark作业抛出“java.lang.OutOfMemoryError:GC开销限制超出”。 作业正在尝试处理4.5g的文件。 我尝试了以下spark配置:

  • 我已经阅读了与此错误相关的所有其他问题,并尝试了他们的解决方案,但没有任何帮助。 这是我的身材。格拉德尔 我在Android Studio 2.1.3和Android Studio 2.2.3上试过,我试过卸载jdk,然后重新安装。我已经格式化了窗口并重试,但没有用。 我一直在学习java。lang.OutOfMemoryError:超出GC开销限制错误 我该如何解决这个问题?

  • 我得到一个java.lang.OutOfMemoryError:在Android1.4上运行gradle时超过了GC开销限制...以下是我的错误: 这怎么修复呢?