如何在读取前根据定义的模式读取 pyspark 中的镶木地板文件?
Posted
技术标签:
【中文标题】如何在读取前根据定义的模式读取 pyspark 中的镶木地板文件?【英文标题】:how to read parquet files in pyspark as per the defined schema before read? 【发布时间】:2021-01-12 06:07:49 【问题描述】:我正在从 pyspark 的 s3 存储桶中完全读取镶木地板文件。有一些镶木地板文件具有不同的架构,这会导致作业错误。我想传递预定义的架构和火花作业应该只读取与预定义的 scehma 匹配的文件。
data = spark.read.parquet(*path_list
)
parquet spark read 命令正在批量读取文件。怎么可能只读取传递预定义模式的镶木地板文件,并且只有那些与传递的模式匹配的镶木地板文件才应该被读取。限制是我需要通过批量加载来实现这一点,这意味着将文件列表 ( path_list ) 传递给 spark read parquet 命令。
【问题讨论】:
【参考方案1】:您可以尝试这样的方法来使其工作。首先读取数据框中的所有文件,然后从您已读取的现有数据框中选择您需要的列,并根据值过滤掉行。
data = spark.read.option("mergeSchema", "true").parquet("data/")
selectedData = data.select("column1","column2",,).filter("column1".isNotNull)
我认为执行上述步骤可以让你动起来。
【讨论】:
以上是关于如何在读取前根据定义的模式读取 pyspark 中的镶木地板文件?的主要内容,如果未能解决你的问题,请参考以下文章
使用 pyspark 中 json 文件中的模式读取固定宽度文件