2017-04-03 187 views
0

我想按年/月/日劃分數據幀。我還想刪除任何空白分區,並將輸出保存在我的本地計算機下,如年/月/日等文件夾下。Spark如何根據年份和月份劃分數據幀

我已經嘗試了以下,但它仍然創建200奇怪的分區。

val sqldf = spark.sql("SELECT year(EventDate) AS Year_EventDate, month(EventDate) as Month_EventDate FROM table CLUSTER BY Year_EventDate,Month_EventDate") 


sqldf.write.format("com.databricks.spark.csv").option("header", "true").mode("overwrite").save(destinationFolder) 

回答

0

你得到200的原因(我猜是正確的?)分區是因爲這是Spark中任務的默認並行度。根據數據的大小,如果需要,可以將其合併爲更少的分區。

saldf.coalesce(10) 

要寫入所需的文件夾,你應該首先重新分區的數據到你喜歡的文件夾,然後通過暗示,作家

sqldf.repartition($"year", $"month", $"day").write.format("com.databricks.spark.csv").option("header", "true").mode("overwrite").partitionBy("year", "month", "day").save(destinationFolder) 

確保列年,月,白天是你想要給他們的任何名字,並且是你數據中的列。

+0

它爲我工作。謝謝 – jane