pyspark 中不存在忽略路径

Posted

技术标签:

【中文标题】pyspark 中不存在忽略路径【英文标题】:Ignore path does not exist in pyspark 【发布时间】:2022-01-18 21:15:09 【问题描述】:

我想忽略产生错误的路径:

'路径不存在'

当我使用 pyspark 读取镶木地板文件时。例如我有一个路径列表:

list_paths = ['path1','path2','path3']

并阅读以下文件:

dataframe = spark.read.parquet(*list_paths)

但路径path2 不存在。一般来说,我不知道哪个路径不退出,所以我想自动忽略path2。我怎样才能做到这一点并且只获得一个数据帧?

【问题讨论】:

下面的帖子能回答你的问题吗? 【参考方案1】:

也许你可以做

existing_paths = [path for path in list_paths if os.path.exists(path)]
dataframe = spark.read.parquet(*existing_paths)

【讨论】:

我不能使用这个解决方案,因为服务器只允许使用 pyspark 或 sql 访问数据,操作系统总是显示“路径不存在”。该解决方案需要使用 pyspark【参考方案2】:

您可以在将文件传递给spark.read之前使用Hadoop FS API检查文件是否存在:

conf = sc._jsc.hadoopConfiguration()
Path = sc._gateway.jvm.org.apache.hadoop.fs.Path


filtered_paths = [p for p in list_paths if Path(p).getFileSystem(conf).exists(Path(p))]

dataframe = spark.read.parquet(*filtered_paths)

sc 是 SparkContext。

【讨论】:

以上是关于pyspark 中不存在忽略路径的主要内容,如果未能解决你的问题,请参考以下文章

如果 pyspark 中不存在,则从数据中选择键列为 null

如何使用 pyspark 2.1.0 选择另一个数据框中不存在的行?

忽略训练数据中不存在的测试特征

@JsonIgnoreProperties转换实体时忽略json中不存在的字段

Pyspark 从 S3 存储桶读取 csv 文件:AnalysisException:路径不存在

@JsonIgnoreProperties转换实体时忽略json中不存在的字段