2015-07-21 50 views
1

我需要從數據框中刪除空分區如何刪除數據框中的空分區?

我們有兩個數據框,都是使用sqlContext創建的。而dataframes構造和組合如下

import org.apache.spark.sql.{SQLContext} 

val sqlContext = new SQLContext(sc) 

// Loading Dataframe 1 
val csv1 = "s3n://xxxxx:[email protected]/xxx.csv" 
val csv1DF = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load(csv1) 

// Loading Dataframe 2 
val csv2 = "s3n://xxxxx:[email protected]/xxx.csv" 
val csv2DF = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load(csv1) 

// Combining dataframes 
val combinedDF = csv1. 
       join(csv2 csv1("column_1") === csv2("column_2")) 

現在分區爲combinedDF數爲200 從here發現該分區的默認數量爲200時,我們使用加入。

在某些情況下,dataframe/csv不是很大,並且會獲得很多空分區,從而導致問題的後面部分代碼出現問題。

那麼我怎樣才能刪除這些創建的空分區?

+2

您可以對數據幀進行「重新分區」。 – abalcerek

+0

我需要爲再分配提供多大的尺寸? – sag

+0

@ user52045對於重新分區,我必須提供新的分區大小。但是很難在運行時找到完美的尺寸。對我而言,我認爲只是刪除空的分區應該沒問題。 – sag

回答

2

repartition方法可用於創建沒有任何空分區的RDD。

This thread討論給定羣集的最佳分區數量。估計分區的最佳數量是一個很好的經驗法則。

number_of_partitions = number_of_cores * 4 

如果有8 r3.xlarge AWS節點的集羣,則應該使用128個分區(每節點每CPU * 4個分區的8個節點* 4個CPU)。

相關問題