如何重新配置​​spark / hadoop以读取以“ _”(下划线)开头的文件?

时间:2018-09-06 19:27:53

标签: scala apache-spark hadoop amazon-emr hidden-files

我知道文件以“ _”和“。”开头。是隐藏文件。并且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选项重新配置并打开“读取隐藏文件功能”?

请帮我提出您的宝贵建议。谢谢。

0 个答案:

没有答案