我有一个rdd,其中的元素是字典。此词典中的值是一个列表。在此列表中,有4个元素。让我们说清单如下,[1,2,3,No]或[3,5,7,Yes] 我想过滤所有那些没有的元素,并将它们保存在一个文本文件中,而所有元素都保存在另一个文本文件中。 rdd涉及大量处理以达到此是/否分类。如果我使用两个rdd.filter()。saveastextFile,它需要两倍的时间吗?如何做到最佳
答案 0 :(得分:0)
在应用yes / no过滤器之前,只需缓存RDD并保存。
据我所知,目前还不可能在一次通过中将RDD分成多个RDD。
想到了一个想法。您可以mapPartitions和每个分区,过滤两次以获得两个简单的数组并手动将其保存到两个文件。显然,这些文件名必须是唯一的,因此您可以在mapPartitions的开头生成一个guid或使用mapPartitionsWithIndex。
答案 1 :(得分:0)
通过在过滤之前调用RDD上的cache()
,将保存所有变换。因此,它不会花费两倍的时间,但只需要稍长的时间(保存/加载数据以及第二次过滤所需的时间)。