我有方法getAllFiles:
import org.apache.hadoop.fs.{LocatedFileStatus, Path}
def getAllDLFiles: Iterator[LocatedFileStatus] = {
val hadoopConfig = spark.sparkContext.hadoopConfiguration
val isCsvFile = (_ : LocatedFileStatus).getPath.getName.endsWith(".csv")
val allFiles = path.getFileSystem(hadoopConfig)
.listFiles(path, true)
.filter(isCsvFile)
allFiles
}
这个方法读取目录中的所有文件,然后应用一个只返回csv文件的过滤器。
但我想马上应用过滤器。在他返回所有文件之前。请帮助我。我知道在Hadoop文件系统库中有一个专门用于此的类- PathFilter。但我不知道如何使用它。
1条答案
按热度按时间nwo49xxi1#
我不认为有什么区别,因为它仍然迭代所有NameNode条目。
在Java中,
但是使用Spark,您可以执行
spark.read.format("csv").path("/path/to/data/")
来读取所有CSV,假设您不关心文件名,而是希望实际读取数据