apache spark不能反序列化不同数量项目的pairrdd

falq053o  于 2021-03-25  发布在  Spark
关注(0)|答案(1)|浏览(559)

我是个新来的 "pyspark",而且已经有几年没有使用 "spark "了,谁能解释一下这里发生了什么。

import random
import pyspark

sc.stop()
sc = pyspark.SparkContext('local[*]')

xx = sc.parallelize(range(100))
yy = sc.parallelize(list(map(lambda x : x *2, range(100))))
print(xx.count())
print(yy.count())
zipped = xx.zip(yy)
print(zipped.collect())

输出。

ValueError                             Traceback (most recent call last)
<ipython-input-57-a532cb7061c7> in <module>
     11 print(yy.count())
     12 zipped = xx.zip(yy)
---> 13 print(zipped.collect())
...  
...
ValueError: Can not deserialize PairRDD with different number of items in batches: (9, 8)
bjp0bcyl

bjp0bcyl1#

这意味着你必须有相同的分区器,每个分区有相同数量的分区和相同数量的键值,否则压缩将无法进行。例如,9 <> 8。
更多信息:无法写入从两个压缩数据框创建的 pyspark dataframe。
rdd.glom().collect()显示并非所有的 xx 和 yy rdd 都符合每个分区相同的元素数,这就是问题所在。

相关问题