簡體   English   中英

混合模式 CSV 導入 Pyspark

[英]Mixed Schema CSV Import Pyspark

我有一個 CSV 文件的文件夾,我想將其讀入 dataframe。 問題是,雖然它們都包含我需要的一組列,但其中一些還包含其他列。 因此,對於文件夾中的每個 CSV,我只想讀取我需要的常用列集。

例如:

表 1 包含以下列:

第 1 列,第 2 列,第 3 列,X

表 2 包含以下列:

第 1 欄、第 2 欄、第 3 欄

我只需要第 1 列、第 2 列和第 3 列。是否可以在讀取時處理它們,或者我是否需要單獨讀取它們,然后將 select 適當的列和 append 一起讀取。

嘗試使用for loop over all files ,並僅獲取從文件中讀取的所需列。

Example:

#files path list
file_lst=['<path1>','<path2>']

from pyspark.sql.functions import *
from pyspark.sql.types import *

#define schema for the required columns
schema = StructType([StructField("column1",StringType(),True),StructField("column2",StringType(),True)])

#create an empty dataframe
df=spark.createDataFrame([],schema)

#loop through files with reading header from the file then select only req cols
#union all dataframes

for i in file_lst:
    tmp_df=spark.read.option("header","true").csv(i).select("column1","column2")
    df=df.unionAll(tmp_df)

#display results
df.show()

如果您的目錄中的文件在所有文件中按特定順序包含column1,column2,column3..etc(required columns) ,那么您可以嘗試如下:

spark.read.option("header","true").csv("<directory>").select("column1","column2","column3").show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM