2014-11-11 23 views
8

Spark memorizza nella cache il set di dati di lavoro in memoria e quindi esegue calcoli a velocità di memoria. C'è un modo per controllare quanto tempo il set di lavoro risiede nella RAM?Memoria Apache nella memoria cache

Ho una grande quantità di dati a cui si accede attraverso il lavoro. Ci vuole tempo per caricare il lavoro inizialmente in RAM e quando arriva il prossimo lavoro, deve caricare nuovamente tutti i dati nella RAM che richiede molto tempo. C'è un modo per memorizzare i dati per sempre (o per un tempo specificato) nella RAM usando Spark?

risposta

9

Per rimozione dati dalla cache in modo esplicito, è possibile utilizzare RDD.unpersist()

Se si desidera condividere RDDs cache su più posti di lavoro si può provare il seguente:

  1. Cache l'RDD utilizzando lo stesso contesto e riutilizzare il contesto per altri lavori. In questo modo si memorizza solo una volta la cache e la si utilizza molte volte
  2. Esistono "server di lavoro spark" che eseguono le funzionalità sopra menzionate. Acquista Spark Job Server open source di Ooyala.
  3. utilizzare una soluzione di caching esterno come Tachyon

ho avuto modo di sperimentare con le opzioni di caching in Spark. Puoi leggere di più qui: http://sujee.net/understanding-spark-caching/

+0

Grazie Sujee. Ho lavorato a questa soluzione. – Atom

0

È possibile specificare l'opzione di memorizzazione nella cache per un RDD. RDD.cache (MEMORY_ONLY)

La scintilla si cancella automaticamente quando nessun'altra azione richiede quell'RDD.

Non è possibile memorizzare nella cache un RDD per un periodo di tempo specificato.

prega di controllare qui di seguito collegamento

http://spark.apache.org/docs/latest/programming-guide.html#which-storage-level-to-choose

+1

Può essere gestito tramite java mettendo in pausa l'esecuzione del daemon che sta caricando RDD nella cache? – Atom

+0

Non sono sicuro di mettere in pausa manualmente i daemon. Stai cercando di riutilizzare i set di dati tra lavori consecutivi? –

+0

@samthebest puoi aiutarmi a capire se esiste un modo possibile di memorizzare in cache RDD per un tempo specifico in memoria invece di cancellarlo dalla cache e caricarlo ogni volta che viene eseguito un nuovo lavoro? – Atom

Problemi correlati