最佳地将rdd的不同部分保存在不同的文本文件中

时间:2017-08-22 12:19:32

标签: apache-spark pyspark

我有一个rdd,其中的元素是字典。此词典中的值是一个列表。在此列表中,有4个元素。让我们说清单如下,[1,2,3,No]或[3,5,7,Yes] 我想过滤所有那些没有的元素,并将它们保存在一个文本文件中,而所有元素都保存在另一个文本文件中。 rdd涉及大量处理以达到此是/否分类。如果我使用两个rdd.filter()。saveastextFile,它需要两倍的时间吗?如何做到最佳

2 个答案:

答案 0 :(得分:0)

在应用yes / no过滤器之前,只需缓存RDD并保存。

据我所知,目前还不可能在一次通过中将RDD分成多个RDD。

想到了一个想法。您可以mapPartitions和每个分区,过滤两次以获得两个简单的数组并手动将其保存到两个文件。显然,这些文件名必须是唯一的,因此您可以在mapPartitions的开头生成一个guid或使用mapPartitionsWithIndex。

答案 1 :(得分:0)

通过在过滤之前调用RDD上的cache(),将保存所有变换。因此,它不会花费两倍的时间,但只需要稍长的时间(保存/加载数据以及第二次过滤所需的时间)。