pyspark выбирает подмножество файлов с помощью regex/glob из s3

У меня есть несколько файлов, каждый из которых разделен по дате (date=yyyymmdd) на амазоне с3. Файлы возвращаются на 6 месяцев назад, но я бы хотел ограничить использование сценария данными только за последние 3 месяца. Я не уверен, смогу ли я использовать регулярные выражения, чтобы сделать что-то вроде sc.textFile("s3://path_to_dir/yyyy[m1,m2,m3]*")

где m1,m2,m3 представляет 3 месяца с текущей даты, которые я хотел бы использовать.

Одно обсуждение также предложило использовать что-то вроде sc.textFile("s3://path_to_dir/yyyym1*","s3://path_to_dir/yyyym2*","s3://path_to_dir/yyyym3*") но это не похоже на работу для меня.

Есть ли sc.textFile( ) принимать регулярные выражения? Я знаю, что вы можете использовать выражения glob, но я не был уверен, как представить приведенный выше случай как выражение glob?

1 ответ

Для первого варианта используйте фигурные скобки:

sc.textFile("s3://path_to_dir/yyyy{m1,m2,m3}*")

В качестве второго варианта вы можете прочитать каждый глобус в RDD и затем объединить эти RDD в один:

m1 = sc.textFile("s3://path_to_dir/yyyym1*")
m2 = sc.textFile("s3://path_to_dir/yyyym2*")
m3 = sc.textFile("s3://path_to_dir/yyyym3*")
all = m1.union(m2).union(m3)

Вы можете использовать шары с sc.textFile но не полные регулярные выражения.

Другие вопросы по тегам