火花在工作过程中写入文件



我有一个Spark作业,它正在生成一组具有统计信息的结果。我的工作项目的数量不仅仅是奴隶数量。所以我每个从奴隶进行了多个处理。

i cache生成RDD对象后能够重复使用它们后,结果是我有多个写操作:一个用于结果对象,另一个用于统计信息。两个写操作都使用saveAsHadoopFile

不用缓存的情况下,每个写操作都会再次重新运行工作,这需要很长时间并重做相同的执行(如果我有更多写信)。

通过缓存,我遇到了内存限制。在缓存过程中,一些先前计算的结果丢失了,我看到"CacheManager:58 - Partition rdd_1_0 not found, computing it"消息。火花最终进入无限循环,因为它试图缓存更多的结果,同时丢失了其他一些循环。

我知道Spark具有不同的存储水平以缓存。使用内存 磁盘可以解决我们的问题。但是我想知道我们是否可以在不生成RDD对象的情况下将文件写下。我不确定是否可能。是吗?

事实证明,在火花工作过程中编写文件与在Java过程中编写文件没有什么不同。写操作只需要创建功能即可序列化并将文件保存到HDF。这个问题有几个关于如何做的答案。

saveAsHadoopFile只是一种方便的方法。

相关内容

最新更新