[英]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.