Python Spark-如何将空 DataFrame 输出到 csv 文件(仅输出标头)?
Posted
技术标签:
【中文标题】Python Spark-如何将空 DataFrame 输出到 csv 文件(仅输出标头)?【英文标题】:Python Spark- How to output empty DataFrame to csv file (Only output header)? 【发布时间】:2017-11-29 03:26:40 【问题描述】:我想将空数据框输出到 csv 文件。我使用这些代码:
df.repartition(1).write.csv(path, sep='\t', header=True)
但由于 dataframe 中没有数据,spark 不会将 header 输出到 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)
有效,但我想问一下是否有没有计数功能的更好方法。
【问题讨论】:
不确定为什么将 df.schema 传递给 createDataFrame。如果您的架构中包含字符串以外的任何内容,则方法调用将中断。 【参考方案1】:df.count() == 0
将使您的驱动程序检索跨执行程序的所有数据帧分区的计数。
在你的情况下,我会使用 df.take(1).isEmpty
(Spark >= 2.1)。仍然很慢,但比原始的count()
更可取。
【讨论】:
【参考方案2】:只有标题:
cols = '\t'.join(df.columns)
with open('./cols.csv', 'w') as f:
f.write(cols)
【讨论】:
该文件可能不在本地系统中。我使用 Azure HDInsight 和 blob 存储。以上是关于Python Spark-如何将空 DataFrame 输出到 csv 文件(仅输出标头)?的主要内容,如果未能解决你的问题,请参考以下文章
Spark saveAsTextFile 将空文件 - <directory>_$folder$ 写入 S3