2015-07-21 2 views
2

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

где 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?

ответ

2

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

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

Для вашего второго варианта, вы можете прочитать каждый отдельный Glob в РДУ, а затем объединение этого РД в один:

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) 

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

 Смежные вопросы

  • Нет связанных вопросов^_^