If you need a single output file (still in a folder) you can repartition (preferred if upstream data is large, but requires a shuffle):
df
      .repartition(1)
      .write.format("com.databricks.spark.csv")
      .option("header", "true")
      .save("mydata.csv")
      
or coalesce:
df
      .coalesce(1)
      .write.format("com.databricks.spark.csv")
      .option("header", "true")
      .save("mydata.csv")
All data will be written to mydata.csv/part-00000.