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

Spark无法使用java。lang.OutOfMemoryError:超出GC开销限制?

萧飞
2023-03-14

这是我的java代码,我在其中使用Apache Spark sql从Hive查询数据。

JavaSparkContext ctx = new JavaSparkContext(new SparkConf().setAppName("LoadData").setMaster("MasterUrl"));
HiveContext sqlContext = new HiveContext(ctx.sc());
List<Row> result = sqlContext.sql("Select * from Tablename").collectAsList();

当我运行此代码时,它抛出java.lang.OutOfMemoryError:超出GC开销限制。如何解决此问题或如何在Spark配置中增加内存。

共有2个答案

亢建木
2023-03-14

你找到解决问题的方法了吗?如果有,请分享:D

这是我的想法:rdd和javaRDD有一个方法toLocalIterator(),火花文档说

迭代器将消耗与此RDD中最大分区一样多的内存。

这意味着如果rdd被划分为许多分区,迭代器将比List消耗更少的内存,您可以这样尝试:

Iterator<Row> iter = sqlContext.sql("Select * from Tablename").javaRDD().toLocalIterator();
while (iter.hasNext()){
    Row row = iter.next();
    //your code here
}

ps:这只是一个想法,我还没有测试

彭宏阔
2023-03-14

如果您使用spark-shell来运行它,那么您可以使用驱动程序内存来提升内存限制:

火花塞-外壳-驱动程序-内存Xg[其他选项]

如果执行器有问题,则可以使用执行器内存XG调整其内存限制

您可以在指南中找到如何准确设置它们的更多信息:提交执行器内存、配置驱动程序内存。

@编辑:因为您是从Netbeans运行它,所以应该能够将它们作为JVM参数传递给Dspark。驾驶员内存=XG和Dspark。遗嘱执行人。内存=XG。我想它是在项目属性下运行的。

 类似资料:
  • 我试图用火花处理10GB的数据,它给了我这个错误, Java语言lang.OutOfMemoryError:超出GC开销限制 笔记本电脑配置为:4CPU,8个逻辑内核,8GB RAM 提交Spark作业时进行Spark配置。 在网上搜索了这个错误后,我有几个问题 如果回答,那将是一个很大的帮助。 1) Spark是内存计算引擎,用于处理10 gb的数据,系统应具有10 gb的RAM。Spark将1

  • 当我执行我的测试时,我得到了这个错误消息: 我知道什么是,但GC开销限制意味着什么?我怎样才能解决这个问题?

  • 当我运行我的8-puzzle程序时,我不断得到“超出GC开销限制”。我曾尝试向JVM添加更多内存,但没有任何帮助。 这是问题所在的方法: start是我从文件. txt中读取的字符串。它可以解决一些问题,但有些问题会产生此错误。

  • 当我尝试运行TestRun时,我遇到了以下错误。我试了很多,但找不到。帮帮我!我得到了内存不足错误Java堆。运行以下代码也需要更多的时间来运行,最后它显示错误,如下所示。如何使这段代码正确?调试这对我来说非常困难。线程“主”中的异常java.lang.OutOfMemoryError:Java堆空间。 班级总和: 类测试运行:

  • 我使用Spark\u apply在Spark中遇到GC开销限制超出错误。以下是我的规格: SparkyR v0.6.2 Spark v2.1.0 4个工人,8核和29G内存 闭包每次从Cassandra提取一行数据。总共大约有20万行。这个过程运行了大约一个半小时,然后给了我这个内存错误。 我试过spark。驾驶员内存本应增加堆大小,但它不起作用。 有什么想法吗?下面的用法

  • 我目前正在使用jenkins创建一个性能框架,并执行jenkins的性能测试。我正在使用https://github.com/jmeter-maven-plugin/jmeter-maven-plugin这个插件。在这个性能框架中,单用户的健全性测试运行良好,并进行了200个用户的实际性能测试,在2分钟内收到了错误消息。lang.OutOfMemoryError:超出了GC开销限制。我在jenki