Я пытаюсь читать файлы паркета в R, используя read_parquet и open_dataset. Ни один из них не очень эффективен. У меня 100 паркетных перегородок по 160МБ каждая. Общий набор данных составляет более 1 миллиарда строк и имеет около 15 столбцов (5 целых и 10 десятичных). Если я использую read_parquet()
, даже для одного файла, это займет более 1,5 минут и потребляет более 10 ГБ памяти, что означает, что для всех 100 частей мне потребуется более 1 ТБ памяти.
df <- open_dataset("myfolder/", partitioning = NULL)
df2 %>%
select(col1) %>%
collect() %>%
count()
Только для подсчета требуется около 6 минут, не говоря уже о преобразовании в фрейм данных, которые вылетают из-за нехватки памяти.
Ранее я обнаруживал похожие проблемы, здесь, здесь и здесь. Однако основное решение - обновить стрелку, где я уже использую 0.17.1.
Какие-нибудь решения?
пс. Используя rjdbc, те же данные можно прочитать менее чем за 20 минут, имея всего 20 ГБ памяти.