Sommario:
- La funzione mappa per i big data
- Come la funzione mappa,
- A volte produrre un elenco di output è sufficiente. Allo stesso modo, a volte è sufficiente eseguire operazioni su ciascun elemento di una lista. Molto spesso, si desidera esaminare grandi quantità di dati di input, selezionare determinati elementi dai dati e quindi calcolare qualcosa di valore dalle relative parti di dati.
Video: Big Data in pillole da BrainWise 2024
MapReduce è una struttura software ideale per i big data perché consente agli sviluppatori di scrivere programmi in grado di elaborare enormi quantità di dati non strutturati in parallelo su un gruppo distribuito di processori.
La funzione mappa per i big data
La funzione mappa è stata una parte di molti linguaggi di programmazione funzionale per anni. La mappa è stata rinvigorita come tecnologia di base per elaborare elenchi di elementi di dati.
Gli operatori in linguaggi funzionali non modificano la struttura dei dati; creano nuove strutture di dati come output. Anche i dati originali non sono modificati. Quindi puoi usare la funzione mappa con impunità perché non danneggerà i tuoi preziosi dati memorizzati.
Un altro vantaggio della programmazione funzionale non è la necessità di gestire espressamente il movimento o il flusso dei dati. Questo assolve il programmatore dalla gestione esplicita dell'output e del posizionamento dei dati. Infine, l'ordine delle operazioni sui dati non è prescritto.
Un modo per raggiungere la soluzione è identificare i dati di input e creare un elenco:
mylist = ("tutte le contee negli Stati Uniti che hanno partecipato alle ultime elezioni generali") > Creare la funzione su comeMolte persone utilizzano la funzione mappa
. Seleziona solo le contee con più di 50.000 persone: mappa howManyPeople (mylist) = [howManyPeople "county 1"; howManyPeople "county 2"; howManyPeople "county 3"; howManyPeople "county 4"; …]
Ora produce un nuovo elenco di output di tutte le contee con popolazioni superiori a 50.000:
La funzione viene eseguita senza apportare modifiche all'elenco originale. Inoltre, è possibile vedere che ogni elemento dell'elenco di output viene mappato a un elemento corrispondente dell'elenco di input, con un sì o nessun allegato. Se la contea ha soddisfatto il requisito di oltre 50.000 persone, la funzione mappa lo identifica con un sì. In caso contrario, viene indicato un no.
Come la funzione mappa,
riduce è stata una caratteristica dei linguaggi di programmazione funzionale per molti anni. La funzione reduce prende l'output di una funzione mappa e "riduce" l'elenco in qualsiasi modo desideri dal programmatore. Il primo passaggio richiesto dalla funzione di riduzione consiste nel posizionare un valore in qualcosa chiamato
accumulatore , che contiene un valore iniziale. Dopo aver memorizzato un valore iniziale nell'accumulatore, la funzione di riduzione elabora quindi ciascun elemento dell'elenco ed esegue l'operazione necessaria nell'intero elenco.
Supponiamo che sia necessario identificare le contee in cui la maggior parte dei voti era destinata al candidato democratico. Ricorda che la tua funzione mapManyPeople ha esaminato ogni elemento dell'elenco di input e creato un elenco di output delle contee con più di 50.000 persone (sì) e le contee con meno di 50.000 persone (no).
(no, contea 1; sì, contea 2; no, contea 3; sì, contea 4;?, county nnn)
Questo è ora l'input per la funzione di riduzione. Ecco come appare:
countylist = (no, contea 1; sì, contea 2; no, contea 3; sì, contea 4;?, Contea nnn): riduce isDemocrat (contea)
I processi di riduzione della funzione ogni elemento della lista e restituisce un elenco di tutte le contee con una popolazione superiore a 50.000, in cui la maggioranza ha votato democratico.
Mettere la mappa dei big data e ridurre insieme
A volte produrre un elenco di output è sufficiente. Allo stesso modo, a volte è sufficiente eseguire operazioni su ciascun elemento di una lista. Molto spesso, si desidera esaminare grandi quantità di dati di input, selezionare determinati elementi dai dati e quindi calcolare qualcosa di valore dalle relative parti di dati.
Non si desidera modificare l'elenco di input in modo da poterlo utilizzare in modi diversi con nuove ipotesi e nuovi dati.
Gli sviluppatori di software progettano applicazioni basate su algoritmi. Un algoritmo
non è altro che una serie di passaggi che devono essere eseguiti al servizio di un obiettivo generale. Potrebbe sembrare un po 'come questo: Inizia con un grande numero di dati o record.
-
Iterate sui dati.
-
Usa la funzione mappa per estrarre qualcosa di interessante e creare un elenco di output.
-
Organizzare l'elenco di output per ottimizzare l'ulteriore elaborazione.
-
Usa la funzione di riduzione per calcolare un insieme di risultati.
-
Produce l'output finale.
-
I programmatori possono implementare tutti i tipi di applicazioni usando questo approccio, ma gli esempi a questo punto sono stati molto semplici, quindi il valore reale di MapReduce potrebbe non essere evidente. Cosa succede quando hai dati di input estremamente grandi? Puoi usare lo stesso algoritmo su terabyte di dati? La buona notizia è sì.
Tutte le operazioni sembrano indipendenti. Questo perché lo sono. Il vero potere di MapReduce è la capacità di dividere e conquistare. Prendete un problema molto grande e spezzatelo in pezzi più piccoli, più gestibili, operate su ciascun blocco in modo indipendente e poi tiratelo tutti insieme alla fine. Inoltre, la funzione mappa è commutativa - in altre parole, l'ordine in cui una funzione viene eseguita non ha importanza.
Quindi MapReduce può eseguire il proprio lavoro su diversi computer in una rete. Può anche disegnare da più fonti di dati, interne o esterne. MapReduce tiene traccia del suo lavoro creando una chiave unica per garantire che tutto il processo sia correlato alla risoluzione dello stesso problema.Questo tasto viene anche utilizzato per riunire tutti gli output alla fine di tutte le attività distribuite.