Ho un'applicazione con circa 10 file flat ciascuno del valore di oltre 200 MM + record in essi. La logica aziendale implica l'unione di tutti loro in modo sequenziale.Spark RDD - evitare shuffle - Il partizionamento aiuta a elaborare file enormi?
mio ambiente: 1 master - 3 slave (per i test ho assegnato un 1GB di memoria per ciascun nodo)
La maggior parte del codice appena fa il seguito per ogni join
RDD1 = sc.textFile(file1).mapToPair(..)
RDD2 = sc.textFile(file2).mapToPair(..)
join = RDD1.join(RDD2).map(peopleObject)
Ogni suggerimento per la messa a punto, come ripartizionare, parallelizzare ..? In caso affermativo, le migliori pratiche in venire con un buon numero per il ripartizionamento?
con la configurazione corrente del lavoro prende più di un'ora e vedo la scrittura casuale per quasi tutti i file è> 3 GB
file memorizzati su HDFS? quante partizioni hai? – marios
n. Sono in aws s3 e non hanno ancora eseguito alcuna partizione, ma potrebbero esserci scintille interne che utilizzano il parallelismo predefinito. – sve
Puoi fare RDD1.partitions.size o eseguire "RDD1.toDebugString" e vedere qual è il numero di partizioni che hai? – marios