我知道文件以“ _”和“。”开头。是隐藏文件。并且hiddenFileFilter
将始终适用。它被添加到方法org.apache.hadoop.mapred.FileInputFormat.listStatus
根据研究,我了解到我们可以使用FileInputFormat.setInputPathFilter
设置自定义PathFilter
,并且hiddenFileFilter
始终处于活动状态。
为此,我创建了一个MyPathFilter
类,如下所示:
class MyPathFilter implements PathFilter{
public boolean accept(Path path) {
// TODO Auto-generated method stub
return path.getName();
}
}
在读取输入文件之前,我知道应该使用类似这样的东西:
FileInputFormat.setInputPathFilter(job,MyPathFilter.class);
但是我基于Spark / Scala的数据处理应用程序/管道的问题在于,我们正在以文本形式读取文件,如下所示:
val spark = context.sparkSession
import spark.implicits._
val rawDF = spark.read
.text(list: _*)
.map { r =>
//do something
}.toDF()
我无法更改读取文件的方式,因为它与从文件位置的文件夹嵌套结构捕获元数据相关。因此,在spark.read
保持不变的情况下,如何确保我也可以读取文件名以“ _”(下划线)开头的文件?在这种情况下如何使用FileInputFormat.setInputPathFilter
?
我们在AWS-EMR上运行作业,因此我们可以在创建EMR集群时参数化FileInputFormat.SetInputPathFilter
吗?还是我们可以使用spark-submit
选项重新配置并打开“读取隐藏文件功能”?
请帮我提出您的宝贵建议。谢谢。