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

Java堆空间

赵宏达
2023-03-14

我面临一些关于内存问题的问题,但我无法解决它。非常感谢您的帮助。我不熟悉Spark和pyspark功能,试图读取大约5GB大小的大型JSON文件,并使用

df = spark.read.json("example.json")

每次运行上述语句时,都会出现以下错误:

java.lang.OutOfMemoryError : Java heap space

我需要以RDD的形式获取JSON数据,然后使用SQLSpark进行操作和分析。但是我在第一步(读取JSON)本身就出错了。我知道要读取如此大的文件,需要对Spark会话的配置进行必要的更改。我遵循了Apache Spark给出的答案:由于阶段失败而中止作业:“TID x因未知原因失败”和Sparkjava.lang.OutOfMemoryError:Java堆空间

我试图更改我的Spark会话的配置,但我想我可能误解了一些设置。以下是我的火花配置。

spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.memory.fraction", 0.8) \
.config("spark.executor.memory", "14g") \
.config("spark.driver.memory", "12g")\
.config("spark.sql.shuffle.partitions" , "8000") \
.getOrCreate()

我为驱动程序内存和执行器内存等不同参数设置的值是否有任何错误。除此之外,我还需要设置更多的配置参数吗?

共有1个答案

严劲
2023-03-14

尝试使用:

df = spark.read.json("example.json").repartition(100)

这是由于在太小的分区之间无序移动数据,并且内存开销将所有分区都放在堆内存中。

我的建议是减少火花。sql。洗牌将分区值降至最低,并尝试使用重新分区或并行性来增加输入/中间数据帧的分区。

spark = SparkSession \
  .builder \
  .appName("Python Spark SQL basic example") \
  .config("spark.memory.fraction", 0.8) \
  .config("spark.executor.memory", "14g") \
  .config("spark.driver.memory", "12g")\
  .config("spark.sql.shuffle.partitions" , "800") \
  .getOrCreate()
 类似资料:
  • 在Ubuntu中,当我运行hadoop示例时: 在日志中,我得到的错误为: 信息映射。JobClient:任务Id:尝试\u 201303251213\u 0012\u m\u000000 \u 2,状态:失败错误:Java堆空间13/03/25 15:03:43信息映射。JobClient:任务Id:trunt\u 201303251213\u 0012\u m\00000 1\u 2,状态:F

  • 突然我的应用程序无法运行并弹出此错误...这个错误有什么想法吗?努力了还是解决不了... Java堆空间绑定文件。例如,在gradle.properties文件中,以下行将最大Java堆大小设置为1,024 MB:org.gradle.jvmargs=-Xmx1024m阅读Gradle的配置指南 阅读Java的堆大小

  • 我试图在Eclipse和GGTS上编译我的Grails项目,在这两个平台上每次都收到相同的错误: 我已经激活了堆空间查看器,但它从来没有达到我在eclipse.ini和ggts.ini上定义的1GB最大大小(甚至没有达到400M),所以我想问题是我的MAC上的JVM选项应该改变。 我设置的Eclipse和GGTS值: -xx:permsize=1024m java-xx:+printflagsfi

  • 我在用grails跑步https://github.com/Netflix/ice但我只是无法让服务器运行,出现以下错误: |错误2014-06-06 14:52:55978[localhost-startStop-1]错误上下文。GrailsContextLoader-初始化应用程序时出错:com。谷歌。常见的util。同时发生的ExecutionError:java。lang.OutOfMem

  • 我正在尝试使用scala执行小计算。Im使用datastax-4.6。我有6个节点,每个16gb RAM和8核。当我尝试执行scala程序时,它会显示以下错误。 错误ActorSystemImpl:线程[sparkDriver-akka.actor.default-dispatcher-17]关闭ActorSystem[sparkDriver]java时出现未捕获的致命错误。lang.OutOfM

  • 我正在Android Studio中开发一个Android应用程序,今天当我按下“运行”按钮时,它突然无法编译。错误如下: 错误:任务': app: pack ageInstantRunResourcesDebug'执行失败。Java堆空间 我试着清理并重建这个项目,但没有成功。