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

pyspark java。lang.OutOfMemoryError:超出GC开销限制

谈阎宝
2023-03-14

我试图用火花处理10GB的数据,它给了我这个错误,

Java语言lang.OutOfMemoryError:超出GC开销限制

笔记本电脑配置为:4CPU,8个逻辑内核,8GB RAM

提交Spark作业时进行Spark配置。

spark = SparkSession.builder.master('local[6]').config("spark.ui.port", "4041").appName('test').getOrCreate()
spark.conf.set("spark.executor.instances", 1)
spark.conf.set("spark.executor.cores", 5)

在网上搜索了这个错误后,我有几个问题

如果回答,那将是一个很大的帮助。

1) Spark是内存计算引擎,用于处理10 gb的数据,系统应具有10 gb的RAM。Spark将10gb的数据加载到10gb RAM内存中,然后执行此任务?

2) 如果第1点是正确的,那么大公司处理100TB数据的能力有多大?他们是否通过将多个系统聚集在一起形成100TB的RAM,然后处理100TB的数据来处理100TB的数据?

3) 通过设置适当的spark配置,难道他们没有其他方法可以使用8gb RAM和8Core处理50gb的数据吗?如果是这样的话,火花的配置应该是什么。

4)如果系统属性是8gb RAM和8核,理想的火花配置应该是什么?用于处理8gb数据

spark配置在spark配置中定义。

spark = SparkSession.builder.master('local[?]').config("spark.ui.port", "4041").appName('test').getOrCreate()
spark.conf.set("spark.executor.instances", ?)
spark.conf.set("spark.executor.cores", ?)

火花遗嘱执行人。核心=?

火花遗嘱执行人。内存=?

火花纱线遗嘱执行人。内存溢出=?

火花驾驶员内存=?

spark.driver.cores=?

火花遗嘱执行人。实例=?

No.of核心实例=?

火花违约并行度=?

共有1个答案

周楷
2023-03-14

如果不能澄清一切,我希望以下内容会有所帮助。

1) Spark是一个内存计算引擎,要处理10 GB的数据,系统应该有10 GB的RAM。Spark将10gb的数据加载到10gb RAM内存中,然后执行此任务?

Spark是一个内存计算引擎,从底层数据湖或分布式存储系统获取输入/源。10Gb文件将被分解成更小的块(128Mb或256Mb块大小,用于基于Hadoop的数据湖),Spark驱动程序将获得许多执行器/内核,以从集群的工作节点读取它们。如果您试图用笔记本电脑或单个节点加载10Gb数据,它肯定会耗尽内存。在处理之前,它必须在一台机器或多个从属/工作节点中加载所有数据。

2) 如果第1点是正确的,那么大公司处理100TB数据的能力有多大?他们是否通过将多个系统聚集在一起形成100TB的RAM,然后处理100TB的数据来处理100TB的数据?

大型数据处理项目使用许多设计模式设计存储和访问层。它们只是不像HDFS那样将GB或TB的数据转储到文件系统。它们使用分区(如销售交易数据是按月/周/日分区的),对于结构化数据,有不同的文件格式可用(特别是列格式),这有助于仅对处理所需的列进行lad。因此,正确的文件格式、分区和压缩是大型文件的关键属性。

3) 通过设置适当的spark配置,难道他们没有其他方法可以使用8gb RAM和8Core处理50gb的数据吗?如果是这样的话,火花的配置应该是什么。

如果没有分区,但有办法的话,这是不可能的。这还取决于它是什么类型的文件。您可以创建一个自定义流文件读取器,该读取器可以读取并处理逻辑块。但是,企业不会读取单个单元中50Gb的文件。即使您通过Office tool在机器中加载10Gb的excel文件,它也会耗尽内存。

4) 如果系统属性为8gb RAM和8核,理想的spark配置应该是什么?用于处理8gb数据

留下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

  • 这是我的java代码,我在其中使用Apache Spark sql从Hive查询数据。 当我运行此代码时,它抛出java.lang.OutOfMemoryError:超出GC开销限制。如何解决此问题或如何在Spark配置中增加内存。