Trasformazioni Map, Filter e CombinePerKey nella scrittura di pipeline Apache Beam con esempi

Trasformazioni Map, Filter e CombinePerKey nella scrittura di pipeline Apache Beam

Foto di JJ Ying su Unsplash

Pratichiamo con dei Dati Reali

Apache Beam sta diventando sempre più popolare come modello di programmazione unificato per pipeline di elaborazione di grandi quantità di dati efficienti e portatili. Può gestire sia dati batch che dati in streaming. Ecco da dove deriva il nome. Beam è la combinazione delle parole “Batch” e “Stream”:

B(da Batch) + eam(da stream)= Beam

La portabilità è anche una grande caratteristica. Devi solo concentrarti sull’esecuzione della pipeline e può essere eseguita ovunque, come Spark, Flink, Apex o Cloud Dataflow. Non è necessario modificare la logica o la sintassi per farlo.

In questo articolo, ci concentreremo sull’apprendimento di come scrivere alcune pipeline ETL utilizzando esempi. Proveremo alcune operazioni di trasformazione utilizzando un buon dataset e speriamo che troverai utili tutte queste operazioni di trasformazione anche nel tuo lavoro.

Sentiti libero di scaricare questo dataset pubblico e seguire insieme:

Dati di Vendita di Esempio | Kaggle

È stato utilizzato un notebook di Google Colab per questo esercizio. Quindi, l’installazione è molto facile. Basta usare questa riga di codice:

!pip install --quiet apache_beam

Dopo aver completato l’installazione, ho creato una directory per questo esercizio chiamata ‘data’:

mkdir -p data

Andiamo a tuffarci nell’argomento di oggi, ovvero le operazioni di trasformazione. Per iniziare, lavoreremo su una pipeline molto semplice che consiste semplicemente nella lettura del file CSV e nella scrittura su un file di testo.

Questo non è così semplice come il metodo read_csv() di Pandas. Richiede un’operazione di coder(). Prima è stata definita una classe CustomCoder() che codifica prima gli oggetti in stringhe di byte, quindi decodifica i byte nei rispettivi oggetti e infine specifica se questo coder è garantito per codificare i valori in modo deterministico. Si prega di consultare la documentazione qui.

Se questa è la tua prima pipeline, per favore fai attenzione alla sintassi per una pipeline. Dopo la classe CustomCoder() c’è la pipeline più semplice. Abbiamo iniziato creando la pipeline vuota come ‘p1’ prima. Quindi abbiamo scritto la pipeline ‘sales’ dove abbiamo prima letto il file CSV dalla cartella dei dati che abbiamo creato in precedenza. In Apache Beam, ogni operazione di trasformazione nella…