В Spark, как записать заголовок в файл, если в кадре данных нет строки? - PullRequest
0 голосов
/ 09 июля 2019

Я хочу записать заголовок в файл, если в фрейме данных нет строки. В настоящее время, когда я записываю пустой фрейм данных в файл, создается файл, но в нем нет заголовка.

I am writing dataframe using these setting and command:
Dataframe.repartition(1) \
         .write \
         .format("com.databricks.spark.csv") \
         .option("ignoreLeadingWhiteSpace", False) \
         .option("ignoreTrailingWhiteSpace", False) \
         .option("header", "true") \
         .save('/mnt/Bilal/Dataframe');

Мне нужна строка заголовка в файле, даже если в кадре данных нет строки данных.

1 Ответ

1 голос
/ 09 июля 2019

, если вы хотите иметь только заголовочный файл. Вы можете использовать сгиб влево, чтобы создать каждый столбец с пробелами и сохранить его как CSV. Я не использовал pyspark, но это то, как это можно сделать в Scala. большая часть кода должна быть многократно используемой, вам нужно будет просто поработать над ее преобразованием в pyspark

val path ="/user/test"
val newdf=df.columns.foldleft(df){(tempdf,cols)=>
tempdf.withColumn(cols, lit(""))}

создать метод для записи файла заголовка

 def createHeaderFile(headerFilePath: String, colNames: Array[String]) {

//format header file path
val fileName = "yourfileName.csv"
val headerFileFullName = "%s/%s".format(headerFilePath, fileName)

    val hadoopConfig = new Configuration()
val fileSystem = FileSystem.get(hadoopConfig)
val output = fileSystem.create(new Path(headerFileFullName))
val writer = new PrintWriter(output)

for (h <- colNames) {
  writer.write(h + ",")
}
writer.write("\n")
writer.close()
}

позвони на свой DF

 createHeaderFile(path, newdf.columns)
...