2014-10-27 60 views
2

我正在尝试对来自多个Cassandra表的数据运行Spark作业,这些表分组为作业的一部分。我试图用一个巨大的数据集13m数据点来结束运行,并且它已经失败了多个点。当我解决这些故障并继续前进时,我遇到了下一个我修复的问题,并再次重新开始工作。有没有办法加快实际数据的测试周期,以便我可以从特定检查点重新启动/恢复以前失败的作业?是否有可能恢复失败的Apache Spark作业?

回答

5

您可以在不同的中点检查RDD到磁盘,如果有必要,您可以从这里重新启动RDD。您将不得不将中间体保存为序列文件或文本文件,并且要做一些工作以确保所有内容都干净利落地从磁盘传出。

我觉得它更有用的启动spark-shell并在那里建立我的数据流。如果您可以识别出具有代表性的数据子集,甚至更好。一旦进入REPL,您可以创建RDD,检查第一个值或取(100)并将其打印到标准输出,计算各种结果数据集等等。 REPL是什么让火花10倍比我对hadoop更有效率。

一旦我在REPL中构建了一个转换和操作流程,我就可以得到我需要的结果,然后我可以将它形成一个scala文件并重构为clean;提取可重用和单元测试的函数,调整并行性,无论如何。

当我需要扩展数据流时,经常会发现自己回到REPL,因此我从我的scala文件中复制并粘贴代码以获得良好的起点,并尝试从此处扩展。