4

我在读取spark数据框时发现了这个奇怪的问题。我将数据帧重新分区为50k个分区。但是,当我读取并对数据帧执行计数操作时,发现在使用spark 2.0时,底层rdd只有2143个分区。Spark数据帧丢失分区

所以我去的路径在哪里保存的数据重新分区,发现

hfs -ls /repartitionedData/ | wc -l 
50476 

所以它创造了50K paritions而保存数据。

然而,随着火花2.0,

val d = spark.read.parquet("repartitionedData") 
d.rdd.getNumPartitions 
res4: Int = 2143 

但随着火花1.5,

val d = spark.read.parquet("repartitionedData") 
d.rdd.partitions.length 
res4: Int = 50474 

有人可以帮助我?

回答

6

这并不是说你正在丢失数据,Spark只会改变分区的数量。 FileSourceStrategy将拼花文件合并到更少的分区中,并对数据进行重新排序。

这是当Spark升级到版本2.0时发生了改变。你可以找到一个有点相关的错误报告here

+1

感谢您的支持。当然不,我不会丢失数据,但是我对分区的改变感到困惑。 –