Path 在pyspark中,即使不存在一个路径,读取csv文件也会失败。我们如何避免这种情况?

Path 在pyspark中,即使不存在一个路径,读取csv文件也会失败。我们如何避免这种情况?,path,pyspark,readfile,exists,databricks,Path,Pyspark,Readfile,Exists,Databricks,在pyspark中,即使一条路径不存在,从不同路径读取csv文件也会失败 Logs = spark.read.load(Logpaths, format="csv", schema=logsSchema, header="true", mode="DROPMALFORMED"); 这里的logpath是一个包含多个路径的数组。这些路径是根据给定的startDate和endDate范围动态创建的。如果日志路径包含5条路径,前3条存在,但第4条不存在。然后整个提取都失败了。我如何在pyspark中

在pyspark中,即使一条路径不存在,从不同路径读取csv文件也会失败

Logs = spark.read.load(Logpaths, format="csv", schema=logsSchema, header="true", mode="DROPMALFORMED");
这里的logpath是一个包含多个路径的数组。这些路径是根据给定的startDate和endDate范围动态创建的。如果日志路径包含5条路径,前3条存在,但第4条不存在。然后整个提取都失败了。我如何在pyspark中避免这种情况,或者在阅读之前如何检查其存在性

在scala中,我通过检查文件存在性来实现这一点,并使用hadoop hdfs filesystem globStatus函数过滤掉不存在的记录

Path = '/bilal/2018.12.16/logs.csv'
val hadoopConf = new org.apache.hadoop.conf.Configuration()
val fs = org.apache.hadoop.fs.FileSystem.get(hadoopConf)
val fileStatus = fs.globStatus(new org.apache.hadoop.fs.Path(Path));

所以我得到了我想要的。就像我在问题中发布的代码一样,它可以在scala中用于文件存在性检查。在PySpark的情况下,我们可以使用下面的代码

fs = sc._jvm.org.apache.hadoop.fs.FileSystem.get(sc._jsc.hadoopConfiguration())
fs.exists(sc._jvm.org.apache.hadoop.fs.Path("bilal/logs/log.csv"))

这与scala中使用的代码完全相同,因此在本例中,我们使用java library for hadoop,java代码在运行spark的JVM上运行。

可能重复@Gladiator,谢谢,这正是我想要的。如果你将发布此答案,那么我可以将其标记为已接受答案。