【问题标题】:Exception in thread "dispatcher-event-loop-0" java.lang.OutOfMemoryError: Java heap space线程“dispatcher-event-loop-0”java.lang.OutOfMemoryError 中的异常:Java 堆空间
【发布时间】:2017-06-12 10:31:20
【问题描述】:

我正在将文件中的数据读入 R 数据框。数据框的维度是 1788228 10。由于这是巨大的,当我尝试转换为 SparkDataFrame 时,我收到此警告:

警告 scheduler.TaskSetManager:阶段 0 包含一个非常大的任务 (48092 KB)。建议的最大任务大小为 100 KB。

当我尝试执行任何动作操作时,比如

dim(df)

它给了我以下错误

线程“dispatcher-event-loop-0”java.lang.OutOfMemoryError 中的异常:Java 堆空间

Spark using python: How to resolve Stage x contains a task of very large size (xxx KB). The maximum recommended task size is 100 KB 等其他帖子中,我可以理解这是因为数据框的大小非常大。但是如何减小尺寸?该帖子还建议广播。我们如何使用 R 来做到这一点?帮助。

【问题讨论】:

  • 您使用哪个函数将数据帧上传到 Spark?
  • @j df = as.DataFrame(rdf)
  • 如果你想上传一个数据框来激发和玩它,你也可以使用 sparklyr (spark.rstudio.com)。安装后,并使用类似 sc <- spark_connect(master = "local") 的方式连接到集群,您可以使用 your_table_ref <- copy_to(sc, df) 将数据上传到 spark。这是一种不同的方法,但它可能有用。

标签: r apache-spark sparkr


【解决方案1】:

Java 内存问题是一场噩梦。确保你 rm()gc() 经常在工作空间中一样多,如果可以的话,将其写在循环末尾以清除每次迭代!

然后,尝试逐行从帧中读取数据并将其保存到 spark 数据帧中。

这是一个渐进式阅读的教程:

read line by line

火花部分由你自己决定。

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 2018-08-13
    • 1970-01-01
    • 2016-07-29
    • 2011-01-23
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多