我想按年/月/日分区数据框。我还想删除任何空分区,并将输出保存在我的本地计算机上,如年/月/日这样的文件夹。
我尝试过以下操作,但它仍会创建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 :(得分: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)
确保列年,月,日是您想要提供的名称,并且是数据中的列。