使用pyspark读取多个csv文件

时间:2020-05-08 21:37:16

标签: pyspark

我需要一次性读取多个csv文件。现在,这些csv文件可能具有可变的列数和任何顺序。我们要求仅读取csv文件中的特定列。我们该怎么做?我尝试定义自定义架构,但随后我在列中得到了不同的数据。

例如:

CSV文件

ID,名称,地址 我如何仅选择ID和地址列。因为如果我说选择(标识,地址),那么它将在地址栏中给我标识和名称数据。我想在阅读时根据标题名称仅选择ID和Address列。

谢谢, 幼稚的

1 个答案:

答案 0 :(得分:2)

您可以遍历文件并创建最终的数据框,例如:

files = ['path/to/file1.csv', 'path/to/file2.csv', 'path/to/file3.csv', 'path/to/file4.csv']

#define the output dataframe's schema column name and type should be correct
schema = t.StructType([
    t.StructField("a", t.StringType(), True), StructField("c", t.StringType(), True)
])

output_df = spark.createDataFrame([],schema)



for i,file in enumerate(data):
    df = spark.read.csv(file, header=True)
    output_df = output_df.union(df.select('a','c'))

output_df.show()

output_df将包含您想要的输出。