Spark 2.3 - Как читать подкаталоги без звездочек? - PullRequest
0 голосов
/ 26 апреля 2018
String folder = "/Users/test/data/*/*";
sparkContext.textFile(folder, 1).toJavaRDD()

Звездочки обязательны для прочтения папки. Да, иначе это не чтение файлов в подкаталогах.

Что если я получу папку, в которой больше подкаталогов, чем указано в звездочках? Как справиться с этим сценарием?

Например:

1) /Users/test/data/*/* Это будет работать ТОЛЬКО если я получу данные как /Users/test/data/folder1/file.txt

2) Как сделать это выражение как generic ? Это все еще должно работать, если я получаю папку как: /Users/test/data/folder1/folder2/folder3/folder4

Структура моей входной папки не всегда одинакова.

Существует ли что-то в Spark для такого сценария?

1 Ответ

0 голосов
/ 26 апреля 2018

На hadoop вы можете попробовать sparkContext.hadoopConfiguration.set("mapreduce.input.fileinputformat.input.dir.recursive","true")

Но THB Я не думаю, что это сработает в вашем случае.

Я бы написал небольшую функцию, которая возвращает структуру вложенного файла в виде списка путей и передает их в spark

Как:

val filePaths = List("rec1/subrec1.1/", "rec1/subrec1.2/", "rec1/subrec1.1/subsubrec1.1.1/",  "rec2/subrec2.1/")
val files = spark.read.text(filePaths: _*)
...