Sto cercando una funzionalità simile alla cache distribuita di Hadoop in Spark. Ho bisogno di un file di dati relativamente piccolo (con alcuni valori di indice) per essere presente in tutti i nodi per fare alcuni calcoli. C'è qualche approccio che lo rende possibile in Spark?Funzionalità Hadoop DistributedCache in Spark
La mia soluzione finora consiste nella distribuzione e nella riduzione del file di indice come una normale elaborazione, che richiede circa 10 secondi nella mia applicazione. Dopo di che, io insisto che indica il file come una variabile di trasmissione, come segue:
JavaRDD<String> indexFile = ctx.textFile("s3n://mybucket/input/indexFile.txt",1);
ArrayList<String> localIndex = (ArrayList<String>) indexFile.collect();
final Broadcast<ArrayList<String>> globalIndex = ctx.broadcast(indexVar);
Questo rende il programma in grado di capire ciò che la variabile globalIndex contiene. Finora è una patch che potrebbe andare bene per me, ma ritengo che non sia la soluzione migliore. Sarebbe comunque efficace con un set di dati considerevolmente più grande o una grande quantità di variabili?
Nota: Sto utilizzando Spark 1.0.0 in esecuzione su un cluster autonomo situato in diverse istanze EC2.
Non si può memorizzare nella cache il file? Fondamentalmente archiviare come RDD. Sarà scalabile – Venkat
Penso che la trasmissione della variabile sia la stessa della memorizzazione nella cache. La mia domanda è diretta principalmente a sapere se esiste un metodo di caching diretto o meno, senza doverlo prima "processare". –
Quindi personalmente penso che una trasmissione var sia migliore della distcache in termini di usabilità, ma c'è una ragione per cui si può semplicemente usare la cache distribuita di Hadoop – aaronman