Кэширование данных при сохранении разделов
Я на 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 и все еще экспериментальным.