Кэширование данных при сохранении разделов

Я на Spark 2.2.0, работает на EMR.

У меня большой датафрейм df (40G или около того в сжатых файлах snappy), который разделен по ключам k1 а также k2,

Когда я запрашиваю k1 === v1 или же (k1 === v1 && k2 ===v2`), я вижу, что он запрашивает только файлы в разделе (около 2% файлов).

Однако, если я кеширую или сохраняю dfвнезапно эти запросы попадают во все разделы и либо увеличивают объем памяти, либо становятся намного менее производительными.

Это большой сюрприз - есть ли способ сделать кеширование, которое сохраняет разделенную информацию

1 ответ

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

Исключением здесь является новый интерфейс создания отчетов о секционировании источника данных API источника данных [SPARK-22389][SQL] v2, который позволяет сохранять информацию о секционировании, но он является новым в 2.3 и все еще экспериментальным.

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