Нужно прочитать максимальную дату папки с файлами в pyspark - Databricks - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть много папок, в которых я должен читать файлы папок с максимальной датой. Представьте, что у меня есть две папки xyz и ab c, в которых есть папки с месяцами и датами. Из xyz я должен прочитать месяц 5, который максимально в папке месяца и 7, который максимально в папке даты.

Folder Structure

Я пробовал ниже код, но он не работает.

Tried codes

1 Ответ

1 голос
/ 09 февраля 2020

Вот один способ использования метода oop FS API Had *1007* listStatus. Сначала перечислите все файлы в папке xyz и получите максимальную папку, используя имя. И затем сделайте то же самое, чтобы получить максимальную дневную папку:

Path = sc._gateway.jvm.org.apache.hadoop.fs.Path

folder_path = Path("/path/to/xyz")
fs = folder_path.getFileSystem(sc._jsc.hadoopConfiguration())

# list all subfolders and returns path + name
month_folders = [(f.getPath().toString(), f.getPath().getName()) for f in fs.listStatus(folder_path) if f.isDir()]
# filter by name to get the max
max_month_folder = max(month_folders, key=lambda x: x[1])[0]

# Now list day subfolders as for month
day_folder = [(f.getPath().toString(), f.getPath().getName()) for f in fs.listStatus(Path(max_month_folder)) if f.isDir()]
max_day_folder = max(day_folder, key=lambda x: x[1])[0]

# read max folder
spark.read.csv(max_day_folder)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...