Одновременная запись нескольких фреймов данных в s3

У меня есть такое требование, что мне нужно создать несколько промежуточных фреймов данных, которые мне нужно записать в разные каталоги.

//this is just a pseudocode
//df is a master data frame
df1 = df.select(some columns)
df2 = df.select(some columns)
df3 = df.select(some columns)
df4 = df.select(some columns)

df1.write(dir1)
df2.write(dir2)
df3.write(dir3)
df4.write(dir4)

Я пробовал два варианта -

  1. создать 4 отдельных задания и порождать все 4 задания одновременно с помощью fork-join Oozie, но с другой стороны, все 4 задания читают одни и те же данные, и

  2. создать 1 задание и записать в 4 каталога после преобразований, здесь обратная сторона - задания, использующие выходные данные df1, должны будут дождаться завершения записи всех 4 df.

Кроме того, каждое задание или отдельная запись в S3 тратит 70-75% всего времени на ввод-вывод.

Есть ли другой способ, которым я могу воспользоваться или попробовать?

Вы пробовали вызывать dfx.write(dirx) каждый в отдельной ветке?

Vladislav Varslavans 11.04.2018 17:45

В любом случае, в случае, если вы повторно используете df несколько раз (как в вашем примере), имейте в виду, что все, что было сделано с df до select (включая чтение из хранилища), будет выполняться несколько раз, если вы не сопротивляться это.

Vladislav Varslavans 11.04.2018 17:49
0
2
109
0

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