使用Spark读取多个csv文件时,如何从单个文件设置标头?

时间:2019-09-22 06:38:11

标签: csv pyspark header

我有多个具有相同格式的.csv文件。它们的名称就像file_#.csv。它们的标题位于第一个文件(file_1.csv)中。 我使用spark阅读此文件,其中的代码如下:

spark.read.csv('*.csv', header=True)

当我显示结果时,标头不是第一个文件的标头,而是数据行之一。 我们怎么能说出那个头在哪个文件中?

1 个答案:

答案 0 :(得分:0)

如果您知道具有标题行的文件,则可以通过从标题文件中读取模式,然后使用相同的模式来读取所有其他文件来生成模式。

df1 = spark.read.csv('a.csv', header=True)
header = spark.read.csv('a.csv', header=False).first()
df2 = spark.read.schema(df1.schema).csv(*.csv, header=False).filter(lambda line: line != header)

代码还从数据中删除标题行。如果可以使用很少的字段来区分标头和数据,则可以改进过滤器功能。