Я знаю, что файлы начинаются с "_" и "."скрытые файлы.И 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, поэтому можем ли мы параметризировать FileInputFormat.SetInputPathFilter
при создании кластера EMR?Или мы можем использовать опции spark-submit
, чтобы перенастроить и включить функцию «читать скрытые файлы»?
Пожалуйста, помогите мне с вашими ценными предложениями.Спасибо.