由于与
等内存相关的问题,我在我的火花流应用程序中看到了一些失败的批次无法计算拆分,阻止输入-0-1464774108087未找到
,我想知道是否有办法在不弄乱当前正在运行的应用程序的情况下重新处理这些批次,只是一般而言,不必是同样的例外。
提前致谢 普拉迪普
答案 0 :(得分:0)
如果您的数据摄取速率高于分配的内存或可以保留,则可能会发生这种情况。您可以尝试将StorageLevel更改为MEMORY_AND_DISK_SER
,以便在内存不足时Spark可以将数据溢出到磁盘。这样可以防止您的错误。
另外,我不认为此错误意味着处理过程中丢失了任何数据,但是块处理器添加的输入块在处理开始之前刚刚超时。
检查Spark User list上的类似问题。
修改强>
数据不会丢失,只是没有出现任务所期望的位置。根据{{3}}:
您可以使用persist()或cache()标记要保留的RDD 方法就可以了。第一次在动作中计算它,它将是 保留在节点上的内存中。 Spark的缓存是容错的 - 如果有的话 RDD的分区丢失,它将自动重新计算使用 最初创建它的转换。