2016-10-19 2 views
0

J'ai un très grand DataFrame dans Spark, et ça prend trop de temps pour faire des opérations dessus.Spark - Réduire la taille des données et les mettre en cache

Il a 10M lignes.

Je veux goûter donc je peux tester des choses plus rapidement, donc je suis en train:

val redux = df.limit(1000) 
redux.cache 

Je pensais que cela persistera un dataframe avec seulement 1K lignes.

Mais exécuter redux.count par exemple prend encore trop de temps (3 minutes). Je lance ceci sur une boîte de 8 travailleurs avec 6 Go de RAM (à partir de DataBricks).

Est-ce que je fais quelque chose de mal?

Merci!

+1

S'il vous plaît exécuter ce 'redux.count' à nouveau et regarder si elle est plus rapide - devrait être;) est paresseux caching, il se fera tout en effectuant la première action –

+0

OUI! Merci. D'autres actions se sont déroulées assez rapidement après la première. = D –

Répondre

1

La réponse est:

Caching effectue paresseusement, donc même si la première action « count » prendra un certain temps, sera plus rapide des opérations ultérieures.

Crédits à T. Gaweda

+0

Il est souvent utilisé dans les algorithmes ML :) Les données d'entrée sont mises en cache, puis le simple 'count()' est calculé pour effectuer la mise en cache. Ensuite, quand une partie itérative de l'alorithme est effectuée, cela fonctionne sur des données déjà en cache et est beaucoup plus rapide :) –