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
но не полные регулярные выражения.