Quando richiamo esplicitamente rdd.cache, è possibile vedere dalla scheda di memoria di spark console che solo una frazione del rdd è in realtà memorizzata nella cache. La mia domanda è dove sono le parti rimanenti? In che modo Spark decide quale parte lasciare nella cache?conserva solo una frazione di RDD
La stessa domanda si applica ai dati grezzi iniziali letti da sc.textFile(). Capisco che questi rdd vengano automaticamente memorizzati nella cache, anche se la tabella di memoria della console spark non visualizza alcuna informazione sul loro stato di cache. Sappiamo quanti di questi sono memorizzati nella cache o sono mancanti?
Grazie per la spiegazione. Ho visto un numero di cache a bassa percentuale. Non sembrava che la parte mancante fosse causata dalla mancanza di memoria degli esecutori di scintille. Non posso esserne sicuro Inoltre, ho letto una volta che i dati di input sono automaticamente memorizzati nella cache. Non riesco più a trovare l'articolo. Continuerò a cercare. – bhomass
La memoria cache predefinita è al massimo 300m. Suppongo (dimensione heap predefinita 512mb * 0.6 memoryFraction, meno un altro overhead). Dipende dalla configurazione se è necessario aumentare la memoria del driver o dell'esecutore. Esegui Spark localmente o con un cluster? Se localmente, devi solo modificare 'spark.driver.memory'. – stholzm
Se si esegue la memorizzazione nella cache poiché il passaggio iniziale è costoso da calcolare e la memorizzazione nella cache come un oggetto in memoria non è richiesta, un miglioramento migliore sarebbe utilizzare il metodo persit con un livello di archiviazione alternativo. https://spark.apache.org/docs/latest/programming-guide.html#rdd-persistence MEMORY_ONLY_SET, ti permette di spremere di più in memoria (x4 con la mia struttura dati), le opzioni DISK ti permettono di fare la cache sul disco –