我在使用 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 )。
