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中不存在的字段