Skip to main content
 首页 » 编程设计

python之为什么 zip 会截断 pyspark 中的数据

2025年05月04日30thcjp

我在使用 zip 时遇到了一些奇怪的行为;我基本上是在尝试使用键值对的 RDD,其中值只是一个索引,例如我初始化一个 rdd 'f':

f = sc.parallelize(tokenizer('a fox jumped over the rabbit')).flatMap(lambda x: ngrams(x))  
f.count() 
52 

然后做:

ind = sc.parallelize(range(f.count())) 
ind.count() 
52 

但是

f_ind = f.zip(ind) 
f_ind.count() 
48  

我不明白为什么有些元素会丢失?

请您参考如下方法:

问题是 SparkRDD zip 操作要求两个 RDD 具有相同数量的元素和相同数量的元素每个分区。最后一个要求是在我上面的案例中违反的。似乎没有解决此问题的方法(但请参见例如 http://www.adamcrume.com/blog/archive/2014/02/19/fixing-sparks-rdd-zip )。