высокое потребление памяти при преобразовании стрелки в фрейм данных в R

Я пытаюсь читать файлы паркета в 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 ГБ памяти.


person justin    schedule 09.07.2020    source источник