Kryo
non avrà un impatto significativo su PySpark
perché memorizza solo i dati come oggetti byte[]
, che sono veloci da serializzare anche con Java.
Ma potrebbe valere la pena provare - si dovrebbe semplicemente impostare la configurazione spark.serializer
e provare a non registrare alcuna classe.
Ciò che potrebbe avere un impatto maggiore è la memorizzazione dei dati come MEMORY_ONLY_SER
e l'abilitazione di spark.rdd.compress
, che li comprimerà i dati.
In Java questo può aggiungere un po 'sovraccarico della CPU, ma Python corre un po' più lento, quindi potrebbe non importa. Potrebbe anche velocizzare il calcolo riducendo GC o consentendo di memorizzare più dati nella cache.
Riferimento: Matei Zaharia's answer nella mailing list.
Wow, una risposta dettagliata così veloce! Grazie. La parte da "Cosa potrebbe fare ..." si riferisce al serializzatore o suggerimento indipendente per l'ottimizzazione? – Gerenuk
è più di un suggerimento per l'ottimizzazione poiché Kryo non avrà alcun impatto su PySpark. Suggerisco di provarlo prima. Non uso PySpark eccessivamente per testarlo e le prestazioni possono dipendere da molte cose: configurazione, casi d'uso, rete, ecc. – eliasah