Sto provando a filtrare la funzione della mappa interna. Fondamentalmente il modo in cui lo farò nella classica mappa-reduce è che il mapper non scriverà nulla al contesto quando i criteri di filtro si incontrano. Come posso ottenere risultati simili con la scintilla? Non riesco a restituire null dalla funzione map in quanto non riesce nel passaggio shuffle. Posso usare la funzione filtro ma sembra un'iterazione inutile del set di dati mentre posso eseguire lo stesso compito durante la mappa. Posso anche provare a generare null con la chiave dummy ma questo è un pessimo rimedio.spark - filter all'interno della mappa
risposta
ci sono poche opzioni:
rdd.flatMap
: rdd.flatMap
si appiattisce una collezione Traversable
nella RDD. Per scegliere gli elementi, in genere viene restituito un valore Option
come risultato della trasformazione.
rdd.flatMap(elem => if (filter(elem)) Some(f(elem)) else None)
rdd.collect(pf: PartialFunction)
consente di fornire una funzione parziale che può filtrare e trasformare elementi dall'originale RDD. Puoi utilizzare tutta la potenza della corrispondenza del modello con questo metodo.
rdd.collect{case t if (cond(t)) => f(t)}
rdd.collect{case t:GivenType => f(t)}
Come Dean Wampler menziona nei commenti, rdd.map(f(_)).filter(cond(_))
potrebbe essere buono e ancora più veloce rispetto alle altre opzioni piu 'terse' di cui sopra.
Dove f
è una funzione di trasformazione (o mappa).
Se si utilizza '... filter(). Map()', verranno eseguiti nello stesso task per ogni partizione, analogamente al concatenamento di "mapper" in MapReduce. Questo potrebbe anche essere più veloce di un singolo 'flatMap' o' collect', a seconda di quanti oggetti temporanei vengono allocati, quindi rapidamente raccolti. –
@DeanWampler Sapevo del pipelining ma è bello sapere che 'filter(). Map()' potrebbe essere più veloce di 'flatmap' o' collect' ... abbiamo sostituito molti 'map(). Filter()' di 'collect()' b/c si legge meglio ma sarà necessario controllare perf. Grazie. – maasg
Grazie. Per ora, il modo "catena di mappe" non mi sta ostacolando. Analizzerò il suggerimento di una mappa piatta equivalente in Java 8 più tardi, quando guarderò in perf. – nir
- 1. Mappa distribuita in Scala Spark
- 2. Apache-Spark: che cos'è la stenografia della mappa (_._ 2)?
- 3. Come ottenere l'ID di un'attività della mappa in Spark?
- 4. Come inizializzare correttamente pigro Mappa della mappa della mappa?
- 5. Spark joinWithCassandraTable() sulla mappa chiave di partizione multipla ERRORE
- 6. Mappa AndroidAttività sul movimento della mappa
- 7. Mappa della compilazione e valori della mappa inversa
- 8. Funzionamento della finestra Streaming Spark
- 9. Genera screenshot della mappa
- 10. stl performance della mappa?
- 11. Objectify Filter by Ref
- 12. WPF DataGrid filter
- 13. Implementazione efficiente della mappa immutabile?
- 14. Problema di prestazioni della mappa
- 15. Utilizzo della mappa con Vettori
- 16. Servlet Filter vs. ServletRequestListener
- 17. ColdFusion EntityLoad Filter
- 18. Liquify filter/iwarp
- 19. Set FacesMessage by Filter
- 20. Android SearchView Filter ListView
- 21. Jetty Cross Origin Filter
- 22. Emberjs filter() versus filterProperty()
- 23. Filter ListView con arrayadapter
- 24. Entity Framework Filter Index
- 25. sqlalchemy filter multiple columns
- 26. Wireshark Info Filter Aiuto
- 27. Slick dove/filter/withFilter
- 28. Mitlproxy url filter
- 29. DropZone acceptedFile type filter
- 30. Action Filter ActionParameters
potresti aggiungere codice di esempio che illustra il problema? – maasg