将带标头的空DF写入CSV

时间:2020-10-04 10:30:24

标签: scala apache-spark apache-spark-sql

即使标题选项为true(header = true),当您尝试使用emptyDF创建csv文件时,Spark也会创建一个没有标题的空文件

import ss.implicits._
val df = List((1, "kishore", 22000)).toDF("id", "name", "salary")
val emptyDF = df.where("id != 1")
emptyDF.show()

emptyDF.write.option("header", true).csv("folder/filename.csv")

是否可以创建带有emptyDF标头的csv文件?

1 个答案:

答案 0 :(得分:1)

if(emptyDF.take(1).isEmpty){
  //To create Headers on empty DF
  ss.createDataFrame(List(Row.fromSeq(emptyDF.schema.fieldNames)).asJava, StructType(emptyDF.schema.fieldNames.map{n => StructField(n, StringType)}))
    .write.option("header", false).csv("folder/filename.csv")
} else {
  emptyDF.write.option("header", true).csv("folder/filename.csv")
}
相关问题