首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Spark警告“在RowBasedKeyValueBatch上调用spill()”的含义

Apache Spark警告“在RowBasedKeyValueBatch上调用spill()”的含义
EN

Stack Overflow用户
提问于 2017-10-24 17:55:37
回答 2查看 6.6K关注 0票数 16

我正在使用Apache Spark本地模式运行pyspark 2.2.0作业,并看到以下警告:

代码语言:javascript
运行
复制
WARN RowBasedKeyValueBatch: Calling spill() on RowBasedKeyValueBatch. Will not spill but return 0.

出现此警告的原因可能是什么?这是我应该关心的事情,还是我可以安全地忽略它?

EN

回答 2

Stack Overflow用户

发布于 2018-01-25 22:50:56

正如here所指出的,这个警告意味着你的内存已经满了,内存的一部分内容被移到了磁盘上。

另请参阅Spark FAQ

我的数据需要放入内存才能使用Spark吗?

不是的。Spark的运算符会将数据溢出到内存不能容纳的磁盘,从而使其能够在任何大小的数据上运行良好。同样,不适合内存的缓存数据集要么溢出到磁盘,要么在需要时动态重新计算,这由RDD的存储级别确定。

票数 13
EN

Stack Overflow用户

发布于 2018-02-08 20:36:51

我猜这条消息比一个简单的警告更糟糕:它处于错误的边缘。

看一下源代码:

代码语言:javascript
运行
复制
 /**
   * Sometimes the TaskMemoryManager may call spill() on its associated MemoryConsumers to make
   * space for new consumers. For RowBasedKeyValueBatch, we do not actually spill and return 0.
   * We should not throw OutOfMemory exception here because other associated consumers might spill
   */
  public final long spill(long size, MemoryConsumer trigger) throws IOException {
    logger.warn("Calling spill() on RowBasedKeyValueBatch. Will not spill but return 0.");
    return 0;
  }

这里:https://github.com/apache/spark/blob/master/sql/catalyst/src/main/java/org/apache/spark/sql/catalyst/expressions/RowBasedKeyValueBatch.java

所以我会说,你在一个无限循环中,“需要溢出,但实际上没有溢出”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46907447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档