我是个新来的 "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)
1条答案
按热度按时间bjp0bcyl1#
这意味着你必须有相同的分区器,每个分区有相同数量的分区和相同数量的键值,否则压缩将无法进行。例如,9 <> 8。
更多信息:无法写入从两个压缩数据框创建的 pyspark dataframe。
rdd.glom().collect()
显示并非所有的 xx 和 yy rdd 都符合每个分区相同的元素数,这就是问题所在。