У меня есть 3 фрейма данных df1, df2 и df3. Каждый фрейм данных содержит примерно 3 миллиона строк. df1 и df3 имеет ок. 8 столбцов. df2 имеет только 3 столбца.
(размер исходного текстового файла df1 составляет около 600 МБ)
Выполняемые операции:
df_new = df1 left join df2 -> группировать по столбцам df1-> выбрать столбцы df1, сначала (столбцы df2)
df_final = df_new внешнее соединение df3
df_split1 = df_final отфильтрован с использованием condition1
df_split2 = df_final отфильтрован с использованием condition2
записать df_split1, df_split2 в одну таблицу после выполнения различных операций с обоими фреймами данных
Весь этот процесс занимает 15 минут в pyspark 1.3.1 со значением раздела по умолчанию = 10, памятью исполнителя = 30 ГБ, памятью драйвера = 10 ГБ, и я использовал cache () везде, где это необходимо.
Но когда я использую запросы к улью, это не занимает 5 минут. Есть ли какая-то конкретная причина, по которой мои операции с фреймами данных выполняются медленно, и есть ли способ улучшить производительность?