2015-08-26 17 views
9

Sto usando la scintilla 1.3.0 con python api. durante la trasformazione di enormi quantità di dati, inserisco nella cache molti DF per un'esecuzione più rapida;Drop data frame spark dalla cache

df1.cache() 
    df2.cache() 

una volta uso di taluni DF è finito e non è più necessario come posso cadere DF dalla memoria (o non-cache è ??)?

ad esempio df1 viene utilizzato attraverso il codice mentre df2 viene utilizzato per poche trasformazioni e, successivamente, non è mai necessario. voglio forzatamente rilasciare df2 per liberare più spazio di memoria.

+2

possibile duplicato di [Come rimozione dati dalla cache RDD?] (Http://stackoverflow.com/questions/25938567/how-to-uncache-rdd) – Paul

+0

@ Paolo Per la cronaca, la ragione per cui questo non è in realtà un duplicato è perché l'API DataFrame è diversa dall'API RDD. In particolare, questa chiamata di metodo è condivisa tra loro. – JHixson

risposta

17

solo effettuare:

df1.unpersist() 
df2.unpersist() 

Spark monitora automaticamente l'utilizzo della cache su ciascun nodo e si diseccita partizioni dati vecchi in meno recente utilizzato modo (LRU). Se si si desidera rimuovere manualmente un RDD anziché attendere che si estenda dalla cache , utilizzare il metodo RDD.unpersist().

+4

E prestare attenzione a smontare il df dopo la fine del lignaggio, quindi dopo l'ultima azione che coinvolge il df memorizzato nella cache. –

Problemi correlati