6 votes

Mise en cache des dataframes tout en conservant les partitions

Je suis sur Spark 2.2.0, fonctionnant sur EMR.

J'ai un grand cadre de données df (40G environ en fichiers compressés snappy) qui est partitionné par clés k1 y k2 .

Quand je demande par k1 === v1 ou ( k1 === v1 && k2 === v2`), je peux voir qu'il n'interroge que les fichiers de la partition (environ 2% des fichiers).

Cependant, si je cache o persister df soudainement, ces requêtes atteignent tous les partitions et fait exploser la mémoire ou est beaucoup moins performant.

C'est une grande surprise. Existe-t-il un moyen de faire une mise en cache qui préserve les informations de partiton ?

4voto

hi-zir Points 19277

Il faut s'y attendre. Le format colonnaire interne de Spark utilisé pour la mise en cache est agnostique quant au format d'entrée. Une fois que vous y avez chargé des données, il n'y a plus de connexion avec l'entrée originale.

L'exception ici est la nouvelle API de source de données [SPARK-22389] [SQL] interface de rapport de partitionnement des sources de données v2 qui permet de conserver les informations de partitionnement, mais elle est nouvelle dans la version 2.3 et encore expérimentale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X