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

感謝您的支持。當然不,我不會丟失數據,但是我對分區的改變感到困惑。 –