Python Spark-如何将空DataFrame输出到csv文件(仅输出标头)?

时间:2017-11-29 03:26:40

标签: csv apache-spark pyspark spark-dataframe

我想将空数据帧输出到csv文件。我使用这些代码:

df.repartition(1).write.csv(path, sep='\t', header=True)

但是由于数据帧中没有数据,spark不会输出标头到csv文件。 然后我将代码修改为:

if df.count() == 0:
    empty_data = [f.name for f in df.schema.fields]
    df = ss.createDataFrame([empty_data], df.schema)
    df.repartition(1).write.csv(path, sep='\t')
else:
    df.repartition(1).write.csv(path, sep='\t', header=True)

它有效,但我想询问是否有更好的方法没有计数功能。

2 个答案:

答案 0 :(得分:0)

仅标题:

cols = '\t'.join(df.columns)
with open('./cols.csv', 'w') as f:
    f.write(cols)

答案 1 :(得分:0)

df.count() == 0将使您的驱动程序检索执行程序中所有数据帧分区的计数。

在你的情况下,我会使用df.take(1).isEmpty(Spark> = 2.1)。仍然很慢,但比原始count()更好。